본문 바로가기

cs/운영체제

운영체제 7강 Process 3

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

 

반효경 [운영체제] 7. Process3

설명이 없습니다.

core.ewha.ac.kr

 

전 강의에서 짤린 부분부터임

 

스레드의 장점 : 4가지로 요약가능

빠른 응답성과 ,자원을 공유하여 낭비를 막을수있다.

cpu가 여러개 달린 컴퓨터에서 병렬성을 높일수 있다. -> cpu 여러개 있는경우 실행흐름이 많으니까 여러개의 스레드를 동시다발적으로 작업해서 결과물을 모으도록 프로그래머가 코드를 작성할수있겠네 -> 그냥 행렬 내용들 쭉연산도 반씩 갈라서 할수도 있고 그런느낌스로다가
1.응답성

사용자 입장에서 빠름  -> 웹브라우져라면 여러개의 쓰레드를 가지고있다치면 각각의 일들을 일단 쓰레드별로 일들 쪼개놓고 빠른 html 텍스트 띄워주기 이런거 부터함 이미지 같은건 다른쓰레드 한테 시키고 느리니까 그럼 순차적으로 웹이 로드 되는느낌이니까 빠른 응답성으로 느껴짐

2.자원을 공유

스택이랑 cpu 수행 정보들만 뺴고 자원들을 공유함

3.경제적이유

2번이랑 같은거아님? -> 프로세스를 만드는것도 오버헤드가 상당함 그에비해 스레드 만드는것은 오버헤드가 적음

컨텍스트 스위치도 프로세스 단위는 오버헤드가 큼  -> 솔라리스의 경우 만드는데 30배 스위칭에 5배의 오버헤드가 든다고함

4.cpu가 여러개가 있는 환경에서 얻을수있는 장점

프로세스 하나지만 각 스레드가 여러 cpu 에서 병렬적으로 일할수있음 그렇게 짜야함 애초에

 

 

프로세스 별로 하나의 PCB 가 만들어지는데

프로세스는 하나이므로 PCB는 하나만 만들어지고

프로세세스에서 쓰레드를 여러개 만들면 CPU 관련 정보(pc, registers set)들만 각각 스레드별로 별도의 것들을 가지게 된다.

 

 

이것도 쓰레드 어떻게 돌아가나 멀티스레드 그림으로 나타낸것이다.

 

쓰레드를 구현하는 방법 대충(개념적으로만 알고있자)

어떤 스레드는 운영체제 커널의 지원을 받고 -> 커널스레드 -> 스레드가 여러개있다는걸 운영체제가 알고있음 -> 스레드 단위 컨텍스트 스위칭때도 커널이 cpu 스케쥴링을 하듯이 넘겨준다.

 

또다른 형태는 라이브러리에 지원을 받고있음-> 유저스레드 -> 프로세스 안에 스레드가 여러개 있다는거 운영체제는 모름 -> 유저프로그램이 스스로 스레드를 관리(라이브러리를 이용)  -> 커널이 볼때는 그냥 일반 프로세스로 봄(제약점들이 있을수 있음)

 

리얼타임 스레드도 있다고 한다.