앞의 내용들은 프로세스 관리 중, CPU의 사용 여부를 스케줄링 하거나 관리하는 것에 대해 알아보았다. 프로세스는 보조 저장장치(HDD, SSD. etc.)에 저장된 프로그램을 메모리에 가져와 실행하는 것이다. 메모리는 보조 저장장치에 비해 상대적으로 크기가 작아, 프로세스 별로 효율적으로 메모리를 할당하는 것은 중요하다. 효율적인 메모리 적재 과거에 메모리의 크기는 16MB, 32MB와 같이 지금은 상상할 수도 없을 정도로 상당히 작았다. 이에 메모리를 효율적으로 사용할 수 있는 방법으로 상대적으로 저장공간이 큰 보조 저장장치를 활용하는 방법을 사용하였다. 동적 적재 (Dynamic Loading) 프로그램 중 적재 후 바로 실행되지 않는 부분도 메모리에 한번에 적재하게 되면 다음과 같은 문제에 직면할..
프로세스 이전 글에서도 알 수 있듯이 프로세스는 현재 메모리에 적대되어 실행 중인 프로그램을 말한다. 운영체제에 따라 프로세스를 job, task 등으로 부르기도 한다. 프로세스 계층 구조 리눅스는 저장장치로 부터 메모리로 최초 적재 시에는 PID (Process ID : 프로세스를 구분할 수 있는 고유 식별 번호)가 0인 root process가 생성된다. root process는 init process를 생성한다. root process는 최초 생성 후에, 프로세스들을 스케줄링 할 때 swapper의 역활을 한다. init process의 경우 생성된 후, 사용자가 운영체제를 사용할 수 있는 환경을 구성한다. 예제의 프로세스 계층 구조는 depth가 3이지만 depth 2의 프로세스들도 자식 프로세스..