스레드

    [운영체제] Ch5. CPU 스케줄링

    [운영체제] Ch5. CPU 스케줄링

    공룡책(운영체제)을 읽고 정리한 글입니다. 실질적으로 운영체제는 프로세스가 아니라 커널 수준 스레드를 스케줄한다. 그러나 '프로세스 스케줄링'과 '스레드 스케줄링' 용어는 상호 교환적으로 사용된다. 일반적인 스케줄링 개념이면 '프로세스 스케줄링'을 사용하고, 스레드에 국한된 개념이면 '스레드 스케줄링' 이라는 용어를 사용할 것이다. CPU 스케줄링 기본 개념 하나의 프로세스가 I/O요청이 완료되기를 기다리고 있다. 만약 프로세스가 I/O응답을 받기 전까지 다른 프로세스를 실행하지 못하고 기다린다면 시간을 매우 비효율적으로 사용하게 된다. 따라서 어느 프로세스가 대기해야 할 경우, 운영체제는 CPU를 회수해 다른 프로세스에게 할당해야 할 것이다. 결국 CPU는 항상 바빠야 한다는게 중요한 원칙이 된다. 그..

    [운영체제] Ch4. 스레드와 병행성

    [운영체제] Ch4. 스레드와 병행성

    공룡책(운영체제)을 읽고 정리한 글입니다. 스레드가 필요한 이유 예를 들어, 웹 서버는 클라이언트로부터 웹 페이지나 이미지, 소리 등에 대한 요청을 받는다. 하나의 웹 서버는 여러 개의 클라이언트들의 병행하게 접근할 수 있다. 만약 웹 서버가 단일 스레드 프로세스로 작동한다면, 자신의 단일 프로세스로 한 번에 하나의 클라이언트만 서비스할 수 있게 되어 클라이언트는 자신이 요청이 서비스되기까지 매우 긴 시간을 기다려야 할 것이다. 하지만 멀티 스레드 환경에서는 아래와 같은 구조로 요청-응답구조가 바뀐다. 요청이 들어오면 새로운 프로세스를 생성하지 않고, 요청을 서비스 할 스레드를 생성하고 추가적인 요청을 받기위한 작업을 재개한다. 멀티 스레드 프로세스의 장점 응답성 실시간 애플리케이션을 멀티 스레드화 하면..