Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 코딩테스트
- LV.3
- Algorithm
- BFS
- 운영체제
- C
- 해시
- 면접질문
- 프로그래머스
- Java
- 동적계획법
- 알고리즘
- Lv.2
- 그래프
- OS
- 쿠쉬쿠쉬
- Lv.1
- Python
- 문제풀이
- 코테준비
- hash
- 이분그래프판별
- 파이썬
- C++
- 고득점Kit
- 2색칠하기
- 코딩테스트준비
- BruteForceSearch
- 단지번호붙이기
Archives
- Today
- Total
쿠쿠의기록
[OS] - 운영체제 (프로세스 관리) 본문
- 목차 -
1. 프로세스의 개념
2. 프로세스의 상태
3. 프로세스 제어 블록
4. 문맥교환
5. 프로세스를 스케줄링하기 위한 큐
6. 스케줄러
7. 프로세스의 생성
8. 프로세스 간의 협력
1. 프로세스의 개념
- 프로세스
- 실행 중인 프로그램 의미
- (프로그램 코드 + 데이터 + PCB)
프로그램 코드 => 식별자, 상태 등 여러 문맥정보 필요 - 위 정보들 PCB(Process Control Block : 제어블록)라는 자료구조에 담아 관리
- PCB에 저장된 정보
- 식별자
- 프로세스의 상태
- PC(Program Counter)
- 메모리 포인터 : 프로그램 코드, 데이터등의 메모리상의 주소
- Context data
- I/O state : 프로세스에 할당된 I/O장치, 및 이벤트 정보
- Accounting information : 리소스 사용률 등의 모니터링 정보
2. 프로세스의 상태
- New: 프로그램이 메인 메모리에 할당
- Ready: 할당된 프로그램이 초기화와 같은 작업을 통해 실행되기 위한 모든 준비를 마침
- Running: CPU가 해당 프로세스를 실행
- Waiting: 프로세스가 끝나지 않은 시점에서 I/O로 인해 CPU를 사용하지 않고 다른 작업을 진행
(해당 작업이 끝나면 다시 CPU에 의해 실행되기 위해 ready 상태로 돌아가야 함) - Terminated: 프로세스가 완전히 종료
상태 구분하는 이유 : 컴퓨터의 자원을 효율적으로 관리하기 위해서
3. 프로세스 제어 블록 (PCB)
- 운영체제가 시스템 내의 프로세스들을 관리하기 위해 프로세스마다 유지하는 정보들을 담는 커널 내의 자료구조
- PCB 구성 요소
- 프로세스 상태 (process state - 준비, 실행, 대기, 완료 등.. )
=> CPU를 할당해도 되는지 여부를 결정하기 위해 필요 - 프로세스 카운터 (program counter)
=> 다음에 수행할 명령의 위치를 가리킴 - CPU 레지스터 (CPU register) 값
=> CPU 연산을 위해 현 시점에 레지스터에 어떤 값을 저장하고 있는지를 나타냄 - CPU 스케줄링 정보 (CPU scheduling information)
=> 프로세스의 CPU 스케줄링을 위해 필요한 정보 - 메모리 관리 정보 (memory management information)
=> 메모리 할당을 위해 필요한 정보 - 자원 사용 정보 (accounting information)
=> 사용자에게 자원 사용 요금을 계산해 청구하는 등의 용도로 사용 - 입출력 상태 정보 (I/O status information)
=> 프로세스가 오픈한 파일 정보 등 프로세스의 입출력 관련 상태 정보
- 프로세스 상태 (process state - 준비, 실행, 대기, 완료 등.. )
4. 문맥교환
문맥교환(context switch) : 실행시킬 프로세스를 변경하기 위해 원래 수행 중이던 프로세스의 문맥을 저장하고 새로운 프로세스의 문맥을 세팅하는 과정
=> 타이머 인터럽트나 프로세스의 입출력 요청 등에 의해 일어남
CPU 디스패치(dispatch) : 준비 상태 프로세스들 중에서 CPU를 할당받을 프로세스를 선택한 후 실제로 CPU의 제어권을 넘겨받는 과정
5. 프로세스를 스케줄링하기 위한 큐
- job queue
- 시스템 내에 있는 모든 프로세스의 집합
- ready queue
- 메인 메모리에 상주하면서 실행될 준비를 하고 기다리는 프로세스 집합
- wait(or device) queue
- 입출력 장치 할당을 대기 중인 프로세스들로 구성
- 입출력 장치 할당을 대기 중인 프로세스들로 구성
- Queue의 특징
- 연결 리스트로 구현
- 큐 헤더 : 리스트 내 처음과 마지막 PCB 가리키는 포인터 포함
- 프로세스 스케줄링
- 새로운 프로세스는 초기에 준비 큐에 놓인 후, 실행을 위해 선택(dispatch)될 때까지 준비 큐에서 기다림
- CPU에 프로세스가 할당되고 running 상태가 되면, 여러 이벤트 중 하나가 발생할 수 있다
6. 스케줄러
- 스케줄러 : 다양한 큐 프로세스들 집합에서 실행을 위해 한 개의 프로세스를 선택하는 운영체제의 컴포넌트
- 장기 스케줄러 or job 스케줄러 : 디스크에 대기 중인 프로세스들 중에서 준비 큐로 옮겨질 프로세스들을 선택
- 단기 스케줄러 or CPU 스케줄러 : 준비 큐에 있는 프로세스들 중에서 다음에 CPU에서 실행될 프로세스를 선택
- I/O bound 프로세스 : CPU 계산보다는 입출력 계산에 보다 더 많은 시간을 소비
- CPU bound 프로세스 : 입출력 요청보다는 CPU 계산에 더 중점적으로 시간을 할애
7. 프로세스의 생성
- 이미 존재하는 프로세스가 다른 프로세스 복제, 생성
- OS로부터 직접 자원 할당 : 부모 프로세스와 자원을 공유해서 사용하는 경우
- 부모와 자식 공존하며 수행되는 모델 : 자식이 종료(terminate)될 때까지 부모가 기다리는(wait) 모델
- 자식과 부모가 같이 CPU 획득하기 위해 경쟁하는 관계 : 자식 프로세스가 종료될 때까지 부모 프로세스는 아무 일도 하지 않고 봉쇄 상태
- 프로세스 종료
- 자발적 종료
- 프로세스가 마지막 명령을 수행한 후 OS에 알려 이루어짐
- 시스템 콜을 통해 운영체제에게 자신이 종료됨을 알림
- OS는 종료를 통보한 프로세스의 자원을 회수하고 시스템 내에서 해당 프로세스를 정리
- 비자발적 종료
- 자식 프로세스가 할당 자원의 한계치를 넘어서는 많은 양의 자원을 요구할 때
- 자식 프로세스에게 할당된 작업이 더 이상 필요하지 않을 때
- 부모 프로세스가 종료(exit)되는 경우
- 자발적 종료
8. 프로세스 간의 협력
- 프로세스 각자 독립적인 주소 영역 가짐, 다른 프로세스 주소 공간 참조하는 것 허용하지 않음
but :효율성 증대를 위해 프로세스 협력을 허용하기도 함
협력 메커니즘 : IPC(Inter-Process Communication: 인터프로세스 커뮤니케이션)
IPC : 하나의 컴퓨터 안에서 실행 중인 서로 다른 프로세스 간에 발생하는 통신
IPC 방법 : 메시지 전달방식 & 공유 메모리 방식
- 메시지 전달 방식
- 프로세스 간에 공유 데이터를 일체 사용하지 않고 메시지를 주고 받으면서 통신하는 방식
- 커널이 메시지를 전달하는 역할을 한다
- 직접통신 : 통신하려는 프로세스의 이름을 명시적으로 표시. 링크는 자동적으로 생성되고, 하나의 링크는 정확히 한 쌍의 프로세스에게 할당됨
- 간접통신 : 메일박스 또는 포트로부터 전달받는다. 간접통신의 커뮤니케이션 링크는 프로세스 간에 메일박스를 공유하는 경우에만 생성됨
공유메모리 방식
- 프로세스들이 주소 공간의 일부를 공유한다.
- 운영체제는 공유메모리를 사용하는 시스템 콜을 지원해, 서로 다른 프로세스들이 주소 공간 중 일부를 공유
- 데이터 일관성 문제 커널이 책임지지 않음, 프로세스들끼리 직접 공유메모리 접근에 대한 동기화 문제를 책임
출처
'개발에 대한 기본 지식 > 운영체제' 카테고리의 다른 글
[OS] - 운영체제 (CPU 스케줄링) (0) | 2023.12.14 |
---|---|
[OS] - 운영체제 (프로그램의 구조와 실행) (2) | 2023.11.27 |
[OS] - 운영체제 (컴퓨터 시스템 동작 원리) (0) | 2023.11.13 |
[OS] - 운영체제 (정의, 기능, 분류, 예, 자원 관리 기능) (0) | 2023.11.10 |