3장 - 프로세스와 스레드

CHO·2022년 12월 26일
0

OS(운영체제)

목록 보기
10/18

프로세스란 무엇일까?
프로세스 제어블록, 프로세스의 상태와 변화

스레드란? 스레드 상태와 동기화, 종류

프로세스란 무엇일까?

: 정상적인 실행을 위해 필요한 환경
: 이미 실행중인 프로그램을 의미한다(a program in execution)
in execution
:수행중인 - 어떤일을 하는데에 나타내는 프로그램과 이때 필요한 값을 저장하고있는 처리기 레지스터, 커널에 등록되어있다

3.1.1 프로세스 제어블록(PCB_Process Control Block)
: 프로세스에 대한 모든 정보를 가진 자료구조로, 메모리에 상주하고, 프로세스 생성시 만들어진다

pcb에 저장되는 정보들
: 프로세스번호, 프로세스상태(준비, 실행, 대기, 보류), 프로세스 우선순위, 프로그램 카운터, 메모리포인터, 문맥데이터(문맥교환시 cpu 레지스터 값들을 저장하는 영역), 할당받은 자원들에 대한 목록, 입출력 정보(진행중이 입출력 요구 등의 정보)

0
0
0
0
0
0

3.1.2 프로세스의 상태(process state)와 변화

active state = 준비(Ready), 실행(running), 대기(block)
: ready, running, block
: 메인메모리에 올라와있다는 의미, 메모리 위에 다수개의 프로그램을 올려놓는다는 의미
: 위의 3가지 상태를 멀티프로그래밍 도수(degree)라고 부름
: 실행(running) - 실제로 현재 cpu 서비스를 받고있는 상황, 실행상태의 프로세스는 cpu 스케줄링 정책에 의해 cpu를 뺏길 수 있다. 이 경우 준비(ready)상태로 바뀐다. 특히 시간할당량(time-quantum)이 소진되어 뺏길 경우 시간종료(time-out)을 한다.
: 준비(ready) - cpu받으면 바로 실행될 준비를 하는 상황 (cpu만 받지 못한 상태)
: (입출력 발생시) 대기(block)상태 - i/o가 끝났다고 하면 다시 -> ready준비 로 이동시킴 다만, 대기상태면 cpu 실행을 하지 못하는 것임...

+) ready상태에서 cpu 할당하는데 그게 바로 cpu 스케줄링(4장)임!!

time quantum(시간할당량) - 4장에 나오는 이야기!
cpu timesharing? - 4장 futured round robin을 이야기 하는건가?

보류 준비, 보류 대기
: suspended ready, suspended block (disk에 있는 놈들, not in memory)
: 메모리에 없다, 메모리에 자신의 공간을 확보하지 못함
: cpu 받고 실행하고 싶으면, ready로 가야함
: 보류대기(suspended block) - 대기 상태에서 메모리 공간을 잃은 상태

swap-out : 보류상태(suspension), ready에 있던 프로세스가 메모리 반납하고 suspended ready로 떨어져 나가는 것
swap-in : 보류준비 상태에서 ready상태로 메모리가 올라오는 것을 의미함

+)문맥교환(context switching)
-모드스위칭(mode switching)
: 인터럽트 처리전후의 프로세스가 같은 경우. 사용자 모드에서 인터럽트 처리를 위해 커널모드로 바뀌고 처리가 끝나면 다시 사용자 모드로 바뀜,

-프로세스 스위칭(process switching) = 문맥교환
: 인터럽트 처리 전후의 프로세스가 서로 다를 때 = 문맥교환

결론!!
프로세스 : cpu 스케줄링의 단위 + 자원으로서의 소유자(cpu,메모리일부,출력,프린트 등)로서의 역할을 하는 놈

0
0
0
0

3.2 스레드란?

스레드 : cpu를 할당받게 되는 단위. 프로세스는 여전히 존재하고 자원의 소유자 개념은 프로세스가 가진다. 즉, 한 프로세스에 속한 스레드들은 프로세스가 가지는 자원을 공유하면서 각자 자신의 실행환경(프로그램 카운트, 스택, 레지스터 값 등)을 가진다

왜 스레드가 필요할까? 예) 인터넷 쇼핑사이트에서 작은 동영상이 한쪽에서는 돌아가고, 물건을 사기위해 입력 요구부분, 배경음악 등이 나온다. 이런 자잘한 서비스를 동시에 지원하기 위해서 스레드 단위로 cpu를 돌린다.

스레드 하나 있다 : 스레드없이 프로세스 단위로 간다는~의미.
스레드 여러개있다(다중스레드) : 하나의 프로세스안에 여러 스레드가 실행되는 것을 의미

각각의 스레드는 스레드 제어블록과 사용자 스택을 갖고있다

쇼핑몰 보여주는 프로세스 : 프로그램 돌다가 사용자가 생각, 입력하기 전까지의 시간동안 다른 스레드가 음악틀어주고, 다른 스레드는 동영상 틀어주고 등을 cpu가 왔다갔다 보여주는 역할을 한다. 그 값들이 모두 스레드 제어 블록에 들어감.

서로 각각 실행중인 위치를 갖고있게끔하고 돌아가는 스택은 사용자스택을 의미함

프로세스에 있는 자원은 스레드가 공유한다.

스레드 단위로 cpu가 왔다갔다함. 나중에 cpu를 받으면 작업 데이터를 이어갈 수 있게 데이터는 스레드가 갖고있어야한다. 프로세스 단위로 행해지는 보류(=자원, 자원은 프로세스 단위로 존재), 종료는 해당 프로세스에 속하는 전체 스레드에 동일한 영향을 미친다.

프로세스 보류 = 그 안에 있는 모든 스레드는 보류상태가 됨

0
0
0
0

3.2.3 스레드의 종류
: 유저레벨 스레드, 커널레벨 스레드

1) 사용자 레벨 스레드
: os눈에 스레드가 안보인다.
: os는 프로세스만 보임. 스레드 라이브러리(일종의 어플리케이션, 스레드 담당, 생성~삭제까지 모두 관장함)는 스레드 관련된 모든 일을 관장, 집행한다.
: 스레드는 운영체제가 인지하지 못한다. 프로세스가 block되었다고만 보이고 thread의 block은 보지 못한다.
: 여러개의 스레드 중 하나의 스레드가 시스템 호출 등으로 중단시 모든 스레드가 중단된다. 커널이 프로세스 내부 스레드 인식하지 못해서 생긴 일로, 해당 프로세스를 대기상태로 전환시킨다.
: 스레드 스위칭에 커널의 개입이 필요없다. 유저의 응용프로그램이 돌아가서 스레드 스위칭이 된다는 건 거기서 관장하는거고, 커널 개입은 필요없음. 왜냐하면 스레드랑 프로세스가 유저 라이브러리에 있으니까.
: 스레드 스위칭 = 스레드끼리 cpu가 이동되는 것을 의미
: 1 cpu = 1프로세스 돌림!
: 스레드 라이브러리가 보고 진행된다 -> block -> 스레드 라이브러리가 보고 중단된 스레드를 이어서 진행시킨다.
: time sharing을 할 경우 : os가 어떤 프로세스에 1초 준다. 그러면 프로세스 안에 있는 여러 스레드(3개라고 가정) 그 cpu 1초를 3개가 나눠써야한다. (0.1 + 0.3 + 0.6)면 1초 다 씀. cpu를 뺏긴다...
: 블록상태가 되면 시스템 프로세스 자체를 블록처리 시켜버림
: a프로세스 1초 받음 : 스레드 라이브러리가 각각의 스레드에게 나눠준다. cpu 이동되는데 합이 1이되면 그 자체로 타임아웃.
: 스레드정보(TCB)는 프로세스 내에서, 프로세스정보(PCB)는 커널에서 관리한다.

: 단점은 여러 스레드들이 서로 다른 cpu를 할당받아 동시에 실행될 수 없다. 각각의 스레드가 충분한 cpu를 할당받지 못할 수 있음.

2) 커널 레벨 스레드
: os 눈에 스레드가 보인다. 커널공간은 운영체제가 관리한다
: 스레드 라이브러리라는 응용프로그램이 위 프로세스에 존재한다.
: os가 프로세스와 3개의 스레드를 만들어서 통째로 관리한다.(만들기, 실행, 종료까지 운영체제가 인지하고 관리한다)
: 모든 스레드 생성 및 스케줄링을 커널이 관맇나다. 스레드가 시스템 호출 등으로 중단되어도, 커널은 프로세스 내의 다른 스레드를 중단시키지 않고 계속 실행시켜준다.
: 한 프로세스 내의 다중 스레드 각각이 cpu를 할당받아 병렬실행이 가능하다. 한 스레드의 대기시간은 프로세스에 속한 다른 스레드로 스위칭이 가능하다.
: 커널이 스레드를 관리하고있으니까 cpu여러개 배정이 가능하다.
: 한 프로세스 안에 속해있는 스레드가 cpu가 왔다갔다한다
: 커널에 있는 스레드는 진정한 멀티프로세싱의 장점을 살린다
: 스레드정보(TCB), 프로세스정보(PCB) 모두 커널에서 관리한다.

: 다중처리 환경이 아닌 환경이라면 스레드 병렬처리에 의한 시간단축은 어렵다...근데 cpu하나있는 단일처리 환경에서 2번의 순차적인 원격프로시저 호출을 수행하면?????

시스템 a에서

3) 혼합 (사용자+커널)
: (1) + (2)의 혼합

profile
매일 개념 익히고 적용합니다

0개의 댓글