목록분류 전체보기 (248)
S E P H ' S
현대 컴퓨터의 메모리에는 여러 프로세스가 존재하는데, 이러한 프로세스들이 하나의 공유 메모리나 또 다른 프로세스에 접근할 때는 신중해야 한다. 이처럼 한 프로세스가 다른 프로세스에게 영향을 주고받는 프로세스를 Cooperating Process 라고 한다. 반대로 아무런 영향을 미치지 않는 독립적인 프로세스는 Independent Process 이다. 현대 컴퓨터 환경에는 Cooperation Process 가 훨씬 많이 존재한다. 이들은 서로 영향을 미치기 때문에 데이터나 흐름에 대한 동기화가 매우 중요하다. 프로세스 사이에 동기화 하는 것을 프로세스 동기화라고 하며 현재는 쓰레드 기준으로 스위칭을 하므로 Thread Synchronization으로 많이 불린다. 프로세스 동기화는 여러 프로세스가 공유..
1. 프로세스와 생성과 종료 프로세스는 프로세스에 의해 만들어진다. 컴퓨터가 부팅되면 운영체제가 메모리에 올라오는데 운영체제가 처음으로 수행하는 일 중에 하나는 최초의 프로세스를 생성하는 것이다. 이렇게 처음 만들어진 프로세스가 다른 프로세스를 만들고 그 프로세스가 또 다른 프로세스를 만드는 과정을 반복한다. 최초의 프로세스는 init이다. 이 이름은 운영체제마다 다르고 init은 UNIX 운영체제 기준 이름이다. 여기서 여러 다른 프로세스들이 생성되면 위와 같은 그림처럼 트리 모양으로 나타낼 수 있다. 여기서 프로세스를 생성한 쪽을 부모 프로세스, 만들어진 프로세스를 자식 프로세스라고 한다. 같은 부모를 갖는 자식 프로세스 끼리는 서로 sibling(형제) 프로세스라고 한다. 프로세스는 각각의 고유 번..
CPU가 하나의 프로세스 작업이 끝나면 다음 프로세스 작업을 수행해야 한다. 이때 다음 프로세스가 어느 프로세스 인지를 선택하는 알고리즘을 CPU Scheduling 알고리즘이라고 한다. 간단히 생각해보면 먼저 온 프로세스가 먼저 실행되는 것이 가장 좋을 것이라 생각할 수 있다. 하지만 여러 상황에서 사용되는 컴퓨터 환경에서 꼭 그렇지만은 않다. 그러므로 CPU 스케줄링에는 여러가지 방법이 존재한다. 1. 선점(Preemptive) VS 비선점(Non-Preemptive) 1.1 선점(Preemptive) 선점(Preemptive)은 프로세스가 CPU를 점유하고 있는 동안 IO나 인터럽트가 발생한 것도 아니고 모든 작업을 끝내지도 않았는데, 다른 프로세스가 해당 CPU를 강제로 점유할 수 있다. 즉, 프..
1. 프로세스 (Process) 프로세스는 메인 메모리에 할당되어 실행중인 상태인 프로그램을 말한다. 프로그램은 일반적으로 하드디스크(보조기억장치)에 저장되어 아무 일도 하지 않는 상태이다. 프로세스는 실행하면서 stack, pointer, data, text, register 등이 끊임없이 변한다. 프로세스는 job, task 등으로 불리기도 한다. 1.1 프로세스 상태 New : 프로그램이 메인 메모리에 할당된다. Ready : 할당된 프로그램이 초기화와 같은 작업을 통해 실행되기 위한 모든 준비를 한다. Running : CPU가 해당 프로세스를 실행한다. Waiting : 프로세스가 끝나지 않은 시점에서 IO로 인해 CPU를 사용하지 않고 다른 작업을 한다. (해당 작업이 끝나면 다시 CPU에 의..