시스템 프로그래밍
-
[Linux] 3. 리눅스 스케줄링CSE/Linux 2015. 8. 17. 14:32
리눅스 운영체제는 프로세스나 후에 설명될 스레드에 대해 선점(Preemption) 스케줄링 기법을 제공합니다. 선점 스케줄링은 시분할 시스템에서 한 프로세스의 CPU 독점을 방지하기 위해 주어지는 타임 슬라이스(Time slice)가 소진되었거나, 인터럽트나 시스템 호출 종료 시에 더 높은 우선 순위의 프로세스가 발생하였음을 알았을 때 현 실행 프로세스로부터 강제로 CPU를 회수하여 다른 프로세스에 할당하는 것을 말합니다. 이러한 선점 스케줄링을 사용하는 대부분의 운영체제는 보통 CPU 효율의 극대화, 프로세스에 대한 빠른 응답 및 공평성의 향상 등을 위해 여러 가지 스케줄링 정책과 동적 우선순위 기법을 사용합니다. 3.1 성능 향상을 위한 선점 스케줄링의 고려 사항 다음은 시분할 선점 스케줄링에서 시스..
-
[Linux] 2-1. 프로세스와 스레드(Process & Thread)CSE/Linux 2015. 8. 12. 16:44
2.3 시스템 호출과 프로세스의 상태 전이 본 절에서는 일반적인 입출력 시스템 호출 및 인터럽트 처리와 관련된 프로세스의 상태 변이를 알아보기 위해 프로세스의 시스템 호출부터 복귀까지의 과정을 입출력인 디스크 파일 입력의 예로 설명하도록 하겠습니다. 사용자가 요구한 입출력이 완료되기까지는 커널 내의 관련 시스템 호출 처리 루틴뿐만 아니라 디바이스 드라이버의 주축인 인터럽트 처리 루틴이 서로 유기적인 관계를 맺고 동작합니다. 이 과정에서는 입출력 완료 대기에 의한 프로세스 대기 상태로의 전이, 문맥 교환이 발생하고, 디스크 입출력을 최소화하기 위한 커널의 버퍼링 기법도 등장합니다. 이러한 처리 과정은 커널의 두 가지 대표적 구성 요소인 시스템 호출과 인터럽트 처리의 관계를 이해하는 중요한 부분이 됩니다. ..
-
[Linux] 2. 프로세스와 스레드(Process & Thread)CSE/Linux 2015. 8. 11. 19:46
프로세스(Process)란 일반적으로 현재 실행 중인 프로그램을 말하며 태스크(task)라는 일반적인 용어로도 사용됩니다. 실행 중인 프로그램의 의미를 가지는 프로세스는 실행되는 동안 커널이 가진 자원(CPU, Memory, Devices, Files)을 독자적으로 차지해야 할 경우가 많습니다. 따라서 프로세스는 항상 커널의 자원을 차지하기 위해 경쟁하고 커널은 이들에게 효율적으로 자원을 스케줄링하여 할당하고 회수하는 역할을 합니다. 프로세스는 커널이 가진 여러가지 자원의 할당 및 사용을 위해 커널 함수를 호출해야 하는데, 이러한 커널 함수들을 일반적으로 시스템 호출(System call)이라 합니다. 따라서 동작 중인 컴퓨터 시스템은 커널과 프로세스 간의 관계에 의해 모든 것이 결정되는 것이라 볼 수 ..