본문 바로가기

cs/운영체제

운영체제 6강 Process 2

https://core.ewha.ac.kr/publicview/C0101020140321141759959993?vmode=f 

 

반효경 [운영체제] 6. Process2

설명이 없습니다.

core.ewha.ac.kr

 

 

 

Thread

쓰레드는 프로세스 내부의 cpu 수행단위가 여러개 있는데 그것을 쓰레드라 부름

 

쓰레드는 cpu 를 수행하는 단위

 

쓰레드의 구성: 독립적으로 구성된것

program counter

register set(cpu 내부 레지스터 정보들 실행중이던)

stack(함수 호출 리턴 관련)

 

thread 가 공유하는부분 = task 라고도 부름 

code 부분

data 부분

os 의 각종자원 -> pcb 보면 파일 어쩌구 메모리 어쩌구, 프로세스 아이디, 프로세스 스케쥴링 관련정보들,프로세스 state 이런것들

 

 

 

 

주소공간 code,data,stack 만들어지는거 data 와 stack 공유함

 

pcb 안에서도 cpu 관련 데이터들  program counter,register 정보들만 다르고 나머지는 프로세스꺼 그대로 가져가는것

현재 어디 실행하고있는지 program counter 가 가리키는데 그것과 register 값들은 thread 형태로 각각 있고(그게 주소 공간에서의 stack)

메모리 관련된것과 파일관련된것 그리고 프로세스 관련 고유 정보들은 공유하는 형태

원래 pcb 의 내용과 비교해보자

 

만약 동일한 일을 하는 프로세스가 여러개 있다면 그것을 별도의 프로세스로 만든다면 프로세스별로 각각의 메모리 주소공간을 만들어야할테고 그것은 메모리 낭비를 초래함

같은 일을 하는 프로세스를 여러개를 생성하고싶으면 메모리 공간 하나만 띄워놓고 각각 프로세스별로 다른 부분의 코드를 실행할수있게 해주면 된다 -> 이게 쓰레드임 즉 그냥 프로세스에서 스택과 cpu 관련 pc,register정보 만 분리하고 나머지 부분은 공유하여서 한 프로세스 내에서 여러개의 코드를 읽는 지점들 즉 실행 흐름들이 여러개가 생기는것임 (스택이 각각 있는것은 실행흐름이 여러개니까 그 실행흐름마다 함수 호출시 그런거 쌓을 스택이 필요)  

 

쓰레드는 프로세스내에서 공유할수있는것은 최대한 공유한 개별단위이다.

 

thread 의 장점:

다중스레드라면 하나의 스레드가 블록되더라도 다른 스레드로cpu를 잡고 일해서 응답시간을 빨리할수있다(컨텍스트 스위칭이 빠르다는거 아닌가? 어쩃든?) blocked 되있는 순간 른 스레드로 교체해서 런닝 가능하다

 

메모리를 절약할수있다 공유자원이있으니