쉽게배우는 운영체제, 한빛미디어 - 요약 및 공부한 내용입니다.
1. 프로세스의 개요
1)프로세스 개념
* 프로세스 : 실행중인 프로그램
- 프로그램이 메모리위에 올라가면 프로세스가 된다. (실행)
⇒ 프로그램 -> 프로세스
2) 프로그램에서 프로세스로의 전환
- 프로세스 : 컴퓨터 시스템의 작업 단위, 태스크(Task) 라고도 함
프로그램이 프로세스가 되는 과정
가. OS가 프로그램을 메모리에서 가져온다.
나. 동시에 작업지시서를 작성한다. (프로세스 제어블럭) ->필수
다. 프로세스 제어블럭에는 다양한 정보가 들어있다.
프로세스 제어블럭( in 정보 )
가. 프로세스 구분자
: 프로세스 ID
나. 메모리 관련 정보
- 프로세스가 원래 메모리의 어디에 저장되어있는지를 알아야 한다.
- 또한, 메모리 보호를 위한 (경계, 한계) 레지스터도 포함되어있다.
다. 각종 중간 값
- 프로세스가 사용했던 중간 값 저장 (Save 기능)
- 프로그램 카운터 : 다음에 작업해야할 코드의 위치가 담김
⇒ 프로세스 제어블럭은 운영체제 영역엣 만들어 진다.
<정리>
1. 프로그램이 프로세스가 된다는 것은, 운영체제로 부터 "프로세스 제어블럭"을 얻는 것이다.
2. 프로세스가 종료된다는 건 해당 프로세스 제어블럭이 폐기 된다는 것이다.
3. 프로세스 : 프로그램 + 프로그램 제어블럭
4. 프로그램 : 프로세스 - 프로그램 제어블럭
3) 프로세스의 종류
- OS도 프로그램이다. 부트스트랩에 의해 실행됨
- 컴퓨터에는 사용자 프로세스와 커널 프로세스가 섞여서 실행
가. 일반 사용자의 "사용자 프로세스 "
나 . 운영체제의 "커널 프로세스"
4) 프로세스의 상태
일괄 작업 시스템
: 생성 → 실행 → 완료
시분할 시스템 (4가지)
: 생성 → 준비 → 실행 → 완료
1) 생성 상태
: 프로세스가 메모리에 올라와 실행 준비, 프로세스 제어블럭 생성
2) 준비 상태
: 생성된 프로세스가 CPU를 얻을때 까지 기다리는 상태
3) 실행 상태
: CPU를 얻어 실행 / 주어진 시간이 끝났지만 작업이 끝나지 않은면 → 준비상태로 감
4) 완료 상태
: 프로세스 제어블럭 소멸
디스 패치(dispatch) - 미리 가져오기
: 준비상태의 프로세스 중 하나를 골라 실행 상태로 바꾸는 CPU 스케줄러의 작업
인터럽트(타임아웃)
: 타임슬라이스 후 다시 준비 상태로 돌아가는 것
→ 정확히는 "클럭으로부터의 인터럽트"
5) 프로세스의 5가지 상태 (대기상태 추가)
→ 호율성을 고려하여 "대기 상태" 추가
인터럽트 시스템에서 프로세스가 입출력 요구하면
cpu가 아무 작업을 하지 않고 기다려야 한다.
.
대기상태
- 입출력을 요구한 프로ㅔ스가 입출력이 완료될 때 까지 기다리는 상태를 대기상태라고 한다.
- 효율성을 높이기 위해 입출력을 요청한 프로세스를 실행 상태에 두지 않고 대기상태로 따로 분류한다.
⇒ 입출력이 완료되면 바로 실행되지 않고 X, 대기상태로 간다.
6) 휴식상태와 보류상태
활성 상태
: 생성 / 준비 / 실행 / 대기 / 완료
.
휴식 상태
: 프로세스가 작업을 일시적으로 쉬고 있는 상태
⇒ 제어블럭 유지, 멈춘 시점부터 재시작 가능
.
보류 상태
: 프로세스가 메모리에서 잠시 쫒겨난 상태 ( = 일시적 상태)
⇒ 보류상태가는 이유
: 대부분 컴퓨터 성능을 떨어뜨리거나 실행을 미루어도 큰 지장이 없는 프로세스
[보류 상태를 포함한 프로세스 상태]
⇒ 보류상태로 들어간 프로세스는 메모리 밖으로 쫒겨나 "스왑 영역"에 보관된다.
2. 프로세스 제어블럭과 문맥 교환(Context Switching)
1) 프로스세 제이블럭(PCB)
(구성)
가. 포인터 : 프로세스 제어블럭의 첫번째 블럭에 저장 ( 큐 구현할때 이용)
나. 프로세스 상태 : 생성, 준비, 실행, 대기, 보류 준비, 보류 대기 등 (두 번째 블럭에 저장)
다. 프로그램 구분자 : 운영체제 내에서 프로세스를 구별하기 위한 것
라. 프로그램 카운터 : 다음에 실행 될 명령어의 위치 저장
마. 프로세스 우선순위 : CPU 스케줄러가 준비상태에서 실행상태로 옮길 때 사용
사. 각종 레지스터 정보 : 자신이 사용하던 레지스터의 중간 값
아. 메모리 관리 정보
자. 활당된 자원 정보 : 입출력 자원, 오픈 파일
차. 계정 정보
카. 부모 프로세서 구분자, 자식 프로세스 구분자
2) 문맥 교환 (context switching
- 프로세스 작업이 바뀌면서 일어남, 문맥교환은 멀티 프로세스 작업 시 일어납니다.
⇒ 제어블럭을 교환하는 작업
일어나는 경우
1) 프로세스 작업이 끝났을 때
2) 인터럽트에 걸렬을 때 (Time Slice)
3. 프로세스의 연산
1) 프로세스의 구조
- 코드 영역 : 코드(소스) 프로세스 본문 기술
- 데이터 영역 : 프로세스의 데이터 영역
- 스택 영역 : 운영체제가 부수적으로 관리하는 데이터 영역
2) 생성과 복사 (fork()와 exec())
<시스템 호출>
1. fork() - 생성, 복사
실행중인 프로세스로부터 새로운 프로세스를 "복사"하는 함수
ex) 크롬 -> 복사
이때 샐행하던 프로세스는 부모 - 자식 관계 성립
2. fork()의 과정
- 프로세스 구분자가 바뀜
- 메모리 관련정보가 바뀜 (위치가 다르기 때문에)
- 부모 구분자/ 자식 구분자가 바뀜
3. fork()의 장점
- 프로세스 생성 속도가 빠르다
- 추가 자원 없이 자원을 상속할 수 있다
- 시스템 관리를 효율적으로 할 수 있다.
(자식 종료 ⇒ 부모가 정리)
4. Exec() - 프로세스 전환
- fork() 후 Exec() - 복사후 수정
- exec() : 기존의 포로세스를 새로운 프로세스로 전환하는 함수
(목적)
- 프로세스의 구조체를 재사용하기 위해서
(미리 만들어둔 제어블럭을 사용)
5. 프로세스 계층구조
: init 프로세스가 루트로 -> fork()->exec() 자식 프로세스 생성
(장점)
여러 작업의 동시 처리가 가능
종료된 프로세스의 자원을 회수하는데 유용
5. 미아 프로세스
: 부모 프로세스가 먼저 종료 되거나 / 자식 프로세스의 비정상적인 종료로 인한 연락 두절 되는 경우
: 프로세스가 정상적으로 회수되지 않은 프로세스
4. 스레드
1) 스레드
: CPU내에 작업 요청을 하는 실행 단위
-> 스레드는 프로세스 내부에서 서로 강하게 연결되어 있다.
* 프로세스(OS) > 스레드 (CPU)
2) 멀티 태스크
: 워드나 프린터 같이 서로 독립적인 태스크
3) 멀티 스레드
: 워드 안에 그림판, 사진, 맞춤법 검사 등과 같은 것
'운영체제 > 쉽게 배우는 운영체제' 카테고리의 다른 글
[OS] 6. OS 교착상태 - 데드락,데드락 조건, 데드락 해결 방법 (쉽게 배우는 운영체제 6장) (0) | 2022.05.08 |
---|---|
[OS] 5. 프로세스 동기화 (쉽게 배우는 운영체제 5장) (0) | 2022.05.08 |
[OS] 4. CPU 스케줄링 알고리즘 (쉽게 배우는 운영체제 4장) (0) | 2022.05.08 |
[OS] 2. 컴퓨터의 구조와 성능향상 기술 (쉽게배우는 운영체제 2장) (0) | 2022.05.07 |
[OS] 1. 운영체제와 컴퓨터 (쉽게배우는 운영체제 1장) (0) | 2022.05.07 |