1. 프로세스의 개념과 상태 변화
프로세스는 디스크에 있는 프로그램을 메모리에 적재하여 운영체제의 제어를 받는 상태가 된, 즉 실행 중인 프로그램이다. 프로세스가 되기 위해서는 프로세서 점유 시간, 메모리, 파일, 입출력장치와 같은 자원이 필요하다.
프로세스의 분류
- 수행 역할에 따른 분류: 시스템 프로세스, 사용자 프로세스
- 병행 수행 방법에 따른 분류: 독립 프로세스, 협력 프로세스
프로세스 상태 변화 관리
- 작업 스케줄러: 스풀러가 디스크에 저장한 작업 중 실행할 작업을 선장하고 준비 큐에 삽입한다.
- 프로세스 스케줄러: 선정한 작업의 상태를 변화시키며 프로세스의 생성에서 종료까지의 과정을 수행한다.
프로세스 제어 블록
프로세스 제어 블록을 통해 프로세스를 제어할 때 필요한 프로세스 상태 정보를 저장한다. PCB는 프로세스 실행 여부에 따라 생성 및 삭제된다. 또한, PCB를 통해 실행 중인 프로세스의 제어를 다른 프로세스에 넘겨 실행 상태가 되도록 하는 프로세스 문맥 교환이 있다.
2. 프로세스의 관리
1) 프로세스의 구조
프로세스 생성 시스템 호출을 이용하여 부모 프로세스가 자식(서브) 프로세스를 계층 구조로 생성할 수 있다.
2) 프로세스의 생성
- 생성 시기: 일괄처리 환경=> 작업이 도착할 때, 대화형 환경=> 새로운 사용자가 로그온할 때
- 생성 과정: 새로운 프로세스 식별자를 할당 -> 프로세스의 주소 공간과 프로세스 제어 블록 공간 할당 -> 프로세스 제어 블록 초기화 -> 링크를 걸기
- fork 명령어, exec 명령어
3) 프로세스의 종료
- 종료 시기: 일괄처리 환경=> 인터럽트나 시스템 호출, 대화형 환경=> 로그오프 또는 터미널 닫기
- 연속 종료
- abort 명령어, exit 명령어, wait 명령어
- 종료 원인: 정상 종료, 시간 초과, 실패, 메모리 부족 등
4) 프로세스의 제거
- 프로그램은 디스크에서 여전히 남아있지만 프로세스와 프로세스 제어 블록이 제거된다.
5) 프로세스 중단과 재시작
- 중단 목적: 입출력 동작이 일반 연산보다 느려서 프로세서가 유휴 상태가 되는 것을 줄이기 위해
- 중단 원인: 시스템 장애, 자원 부족, 과도한 작업량 등
6) 프로세스 우선순위 변경
- 프로세서 중심 프로세스와 입출력 중심 프로세스로 분류하여 우선순위를 부여한다.
7) 프로세스의 문맥 교환
- 인터럽트 종류: 입출력 인터럽트, 클록 인터럽트
- 이전 프로세스의 상태 레지스터 내용을 보관하고 다른 프로세스의 레지스터를 적재하여 프로세스를 교환하는 일련의 과정
3. 스레드의 개념과 상태 변화
하나의 스레드에는 스레드 실행 환경 정보, 지역 데이터, 스택이 존재하며, 동일 프로세스 내에 있는 코드, 데이터, 힙 정보를 공유할 수 있다. 같은 프로세스를 가지는 스레드들은 공동의 목적을 달성하기 위해 병렬로 수행한다. 프로세스 중 스레드에 프로세스의 속성의 일부가 들어있다면 경량 프로세스, 스레드 하나에 프로세스 하나가 있다면 중량 프로세스이다.
스레드의 상태 변화 과정은 프로세스와 매우 유사하나, 생성과정에서 운영체제가 부모프로세스와 공유할 자원을 초기화할 필요가 없고, 스레드들은 서로 독립적이지 않다는 점에서 다르다.
장점
- 사용자 응답성 증가
- 프로세스 자원과 메모리 공유 가능
- 경제성이 좋음
- 다중 처리로 성능과 효율 향상
프로세스는 단일 스레드 실행 혹은 다중 스레드 실행을 할 수 있다. 다중 스레드를 통해 프로그램의 비동기적 요소를 구현하면 프로그램의 성능을 월등히 향상시킬 수 있다.
스레드 제어 블록에는 실행 상태, 스케줄링 정보, 계정 정보, 스케줄링 큐용 다양한 포인터, 프로세스 제어 블록을 포함하는 포인터를 담는다.
4. 스레드의 구현
1) 사용자 수준 스레드: 다대일(n:1) 매핑
사용자 영역의 스레드 라이브러리를 구현하고, 스레드와 관련된 모든 행위를 사용자 영역에서 하는 것이다.
- 장점: 이식성이 높음, 오버헤드가 적음, 유연한 스케줄링이 가능
- 단점: 시스템의 동시성을 지원하지 않음, 확장에 제약이 따름, 스레드 간 보호 불가능
2) 커널 수준 스레드: 일대일(1:1) 매핑
커널이 스레드와 관련된 모든 작업을 관리하는 것이다.
- 장점: 커널이 동일 프로세스의 스레드들을 병행으로 수행할 수 있다.
- 단점: 커널이 전체 프로세스와 스레드 정보를 유지하여 오버헤드가 커진다.
3) 혼합형 스레드 - 다대다(n:m) 매핑
사용자 수준 스레드는 커널 수준 스레드와 비슷한 경량 프로세스에 다대다(n:m)로 매핑되고, 경량 프로세스는 커널 수준 스레드와 일대일(1:1)로 매핑된다. 결국 다수의 사용자 수준 스레드에 다수의 커널 스레드가 다대다(n:m)로 매핑된다.
- 장점: 스레드 풀링을 이용한 일대일(1:1) 매핑으로 오버헤드를 줄일 수 있다, 작업량 증가, 시스템 전체의 성능 향상
출처) 그림으로 배우는 구조와 원리 운영체제(구현회 지음)
'컴구&운영체제' 카테고리의 다른 글
그림으로 배우는 구조와 원리 운영체제(구현회) 3장 연습문제 풀이 (0) | 2023.04.12 |
---|---|
그림으로 배우는 구조와 원리 운영체제(구현회) 2장 연습문제 풀이 (0) | 2023.04.06 |
운영체제의 소개(개념과 발전 목적, 기능, 발전 과정과 유형, 서비스, 구조) (0) | 2023.04.06 |
그림으로 배우는 구조와 원리 운영체제(구현회) 1장 연습문제 풀이 (0) | 2023.04.05 |
컴퓨터 시스템의 동작 과정(명령어의 구조와 실행, 인터럽트) (0) | 2023.04.05 |