전체 글(55)
-
프로세스 동기화, Peterson's Solution
프로세스 동기화(Process synchronization)여러 프로세스가 공유하는 자원의 일관성을 유지하는 것협력 프로세스(Cooperating process)다른 프로세스와 데이터를 공유하거나, 서로 영향을 주고받는 프로세스프로세스 실행 순서에 따라 결과가 달라질 수 있음경쟁 상태(Race condition)여러 프로세스 또는 스레드에서 공유 자원에 접근할 때, 의도치 않은 결과를 초래할 수 있는 상태예시: Too much milk problemA가 냉장고를 열어 우유가 없는 것을 확인하고, 우유를 사러 간다.B가 냉장고를 열어 우유가 없는 것을 확인하고, 우유를 사러 간다.A가 우유를 사서 집에 돌아온다.B가 우유를 사서 집에 돌아온다.우유는 하나만 사면 충분하지만, 2개를 사 버렸다.A와 B를 프..
2025.11.05 -
IPC(Inter Process Communication)
IPC의 정의각자의 메모리 영역을 갖고 독립적으로 동작하는 프로세스 간 자원을 공유하는 방식을 말한다.메모리를 거의 공유하는 스레드 간 통신보다는 속도가 떨어진다.IPC의 종류공유 메모리(Shared memory)프로세스 간에 공유 가능한 메모리를 별도로 구성해 자원을 공유하는 방식이다.커널 등의 매개체 없이 데이터에 접근할 수 있기 때문에 IPC 중 가장 빠르다.모든 프로세스가 동등한 권한을 갖고 공유 데이터에 접근하므로 동기화가 필수로 이루어져야 한다.소켓(Socket)네트워크 소켓 통신을 통해 데이터를 공유하는 방식이다.클라이언트(client)와 서버(server) 구조로 프로세스 간 데이터를 주고받는다.파이프(Pipe)FIFO(First In First Out) 구조의 메모리인 파이프를 이용해 프..
2025.11.04 -
멀티프로세싱과 멀티스레딩, 컨텍스트 스위칭
동시성과 병렬성동시성(concurrency)싱글 코어에서 여러 작업들을 작은 단위로 나누어 번갈아 가며 처리하는 방식을 말한다.CPU는 한 번에 하나의 작업만 처리할 수 있으므로, 짧은 시간 동안 여러 작업을 번갈아 처리하여 동시에 실행되는 것처럼 보여준다.병렬성(parallelism)멀티 코어에서 각각의 코어가 작업을 동시에 처리하는 방식이다.물리적인 시간 관점에서 실제로 여러 작업이 동시에 처리된다.멀티프로세싱과 멀티스레딩멀티프로세싱(multiprocessing)하나의 응용 프로그램을 여러 프로세스로 구성하는 것을 말한다.장점하나의 프로세스에 문제가 발생하더라도 다른 프로세스에 영향을 주지 않아 안정적이다. (=신뢰성이 높다)단점CPU가 여러 프로세스를 동시에 처리하기 위해 컨텍스트 스위칭이 발생하는..
2025.10.29 -
프로세스의 생성과 상태
프로세스의 생성새로운 프로세스는 기존 프로세스에서 fork() 또는 exec() 함수를 호출하여 생성된다.fork()새로운 메모리 공간을 할당하고, 그곳에 호출한 프로세스의 복사본을 생성한다.부모 프로세스(해당 함수를 호출한 프로세스)가 종료되지 않고 자식 프로세스(복사본 프로세스)와 별개로 존재한다.부모 프로세스에서는 자식 프로세스의 PID를, 자식 프로세스에서는 0을 리턴한다.exec()호출한 프로세스의 메모리 공간을 덮어쓰고, 새로운 프로세스를 생성한다.부모 프로세스의 메모리 공간을 덮어쓰므로, 자식 프로세스가 호출되면 부모 프로세스는 더 이상 실행되지 않는다.프로세스의 상태프로세스의 상태는 크게 5가지로 나눌 수 있다.생성(new)프로세스가 fork()나 exec() 등으로 생성된 상태이다.PCB..
2025.10.28 -
프로세스(Process)와 스레드(Thread)
프로세스(Process)메인 메모리에 로드(load)되어 실행 중인 하나의 프로그램프로그램(program): 특정 작업을 수행하기 위한 명령어의 집합각각의 프로세스는 OS로부터 독립된 메모리 영역을 할당받으며, 서로의 메모리 영역에 접근하는 것이 불가능하다.프로세스의 메모리 영역스택(stack)지역 변수, 함수의 매개변수, 반환되는 주소 값이 저장되는 영역이다.높은 주소 값에서 낮은 주소 값 순서로 메모리가 할당된다.스택 영역의 크기는 컴파일 때 결정된다.힙(heap)동적 할당된 변수가 저장되는 영역이다.낮은 주소 값에서 높은 주소 값 순서로 메모리가 할당된다.힙 영역의 크기는 런타임 때 결정된다.데이터(data)전역 변수, 정적 변수, 배열, 구조체가 저장되는 영역이다.초기화된 변수는 데이터 영역에, ..
2025.10.16 -
인터럽트(Interrupt)와 시스템 콜(System call)
인터럽트(Interrupt)프로그램 사용 중 예기치 못한 상황이 발생할 경우, 현재 실행중인 작업을 즉시 중단하고 CPU에게 해당 상황에 대한 우선 처리가 필요함을 알리는 것인터럽트의 종류외부 인터럽트(external interrupt): 키보드/마우스 입력, 타이머, 외부 신호 등에 의해 발생하는 인터럽트내부 인터럽트(internal interrupt): 0으로 나누기, 오버플로, 잘못된 명령어, 소프트웨어 인터럽트로 인해 발생하는 인터럽트, 트랩(trap)이라고도 한다.소프트웨어 인터럽트(software interrupt): CPU 내부에서 명령어를 통해 발생시키는 인터럽트. 시스템 콜에 사용된다.인터럽트의 처리 과정프로그램 실행 중 인터럽트가 발생하였다.CPU는 현재 실행 중이던 프로그램의 프로그램..
2025.10.11