일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 코딩테스트 [ ALL IN ONE ]
- 커널 동기화
- BreadcrumbsComputer-Networking_A-Top-Down-Approach
- recoverability
- 코딩애플
- B tree 데이터삽입
- 시스템프로그래밍
- 시그널 핸들러
- 온디바이스AI
- 반효경
- CPU 스케줄링
- 쉬운코드
- SQL
- 쉬운 코드
- 인터럽트
- 운영체제와 정보기술의 원리
- 운영체제
- 백엔드
- Git
- vite
- 트랜잭션
- 개발남노씨
- Extendable hashing
- 갤럭시 S24
- concurrency control
- 프로세스 주소 공간
- SDK
- 김영한
- 네트워크
- 데이터베이스
- Today
- Total
티끌모아 태산
프로세스(Process)(3) 본문
프로세스를 스케줄링하기 위한 큐
운영체제는 준비 상태(Ready State)에 있는 프로세스들을 줄 세우기 위해 준비 큐(Ready Queue)를 두고 준비 큐의 맨 앞에 있는 프로세스에게 가장 먼저 CPU를 할당한다. 또한 CPU를 할당하기 위한 준비 큐 이외에도 운영체제는 특정 자원을 기다리는 프로세스들을 줄 세우기 위해 자원별로 장치 큐(Device queue)를 둔다.
예를들어, 디스크에 입출력 서비스를 요청한 프로세스들은 디스크 입출력 큐(disk I/O queue)에 줄을 서게 된다. 그러면 디스크 컨트롤러가 디스크 입출력 큐에 서 있는 순서대로 프로세스의 입출력 작업을 수행한다. 프로세스별 입출력 작업이 완료되면 디스크 컨트롤러가 CPU에 인터럽트를 발생시키며 인터럽트 처리 루틴에 의해 디스크 입출력이 완료된 프로세스는 입출력 큐에서 빠져나와 CPU를 기다리는 준비 큐에 줄 서게 된다.
*또한, 공유 데이터라는 소프트웨어 자원을 기다리는 큐도 있는데 이 공유 데이터에는 매 시점 하나의 프로세스만이 접근할 수 있도록 해야한다. 그 이유는 서로 다른 프로세스가 같은 데이터에 동시에 접근하게 되면 데이터에 대한 일관성이 훼손될 수 있기 때문이다. 따라서 만약 한 프로세스가 일종의 소프트웨어 자원인 공유데이터를 사용하고 있다면 다 사용하고 반납할 때까지는 다른 프로세스가 CPU를 할당받았다 하더라도 접근을 하지말고 기다려야 한다.
이와 같이 프로세스의 상태 관리는 커널의 주소 영역 중 데이터 영역에 다양한 큐를 두어 수행하게 된다. 다시말해, 프로세스가 CPU를 기다리고 있는지 아니면 입출력 서비스를 기다리고 있는지 등의 정보를 커널이 총체적으로 관리한다.
스케줄러
⭐️스케줄러란 어떤 프로세스에게 자원을 할당할 것이지를 결정하는 운영체제 커널의 코드를 말한다. 스케줄러는 다음과 같이 구분할 수 있다.
- 장기 스케줄러: 프로세스가 생성이 되면 시작 상태(메모리, CPU모두 할당 받지 못한 상태)를 거쳐 준비 상태(자신만의 메모리 주소공간 할당 받았지만 CPU는 할당받지 못한 상태)에 이르게 되는데, 어떤 프로세스를 준비 큐에 삽입할지를 결정하는는 스케줄러 입니다. 현대의 시분할 시스템용 운영체제에서는 장기 스케줄러 대신 중기 스케줄러를 두는 경우가 많다. 즉, 현대의 시분할 시스템용 운영체제에서는 프로세스가 시작 상태가 되면 장기 스케줄러 없이 곧바로 프로세스에 메모리를 할당해 준비 큐에 넣어주게 된다.
- 중기 스케줄러: 너무 많은 프로세스에게 메모리를 할당해 시스템의 성능이 저하되는 경우 이를 해결하기 위해 메모리에 적재된 프로세스의 수를 동적으로 조절하는 역할, 예를들어 메모리에 올라와 있는 프로세스를 중에서 일부를 선정해(봉쇄 상태인 프로세스, 타이머 인터럽트가 발생해 준비큐에 있는 프로세스) 이들로부터 메모리를 통째로 빼앗아 그 내용을 디스크의 스왑 영역에 저장한다. 즉 스왑 아웃한다. 이렇게 중기 스케줄러에 의해 메모리를 모두 빼앗기고 디스크로 스왑 아웃되는 프로세스의 상태를 중지 상태라고 한다.
- 단기 스케줄러: 준비큐에 있는 여러 프로세스들 중 어떤 프로세스에게 CPU를 할당할 것인가를 결정하는 스케줄러. 스케줄링 알고리즘 활용
'CS 지식 > 운영체제' 카테고리의 다른 글
프로세스(Process)(4) (0) | 2023.08.02 |
---|---|
프로세스(Process)(2) (0) | 2023.07.31 |
프로세스(Process)(1) (0) | 2023.07.29 |