목차
📂content
프로세스의 관리3
1. 스케줄러
- 운영체제의 함수, 또는 코드 중의 일부분인데 역할이 나누어져 있어서 그냥 스케줄러라고 부르는 것. 그래서 스케줄러는 그냥 운영체제다!라고 보면된다.
- 장기 스케줄러 : 메모리는 사실 스케줄이 필요하지 않지만 그냥 메모리 스케줄러라고 보아라.
- (프로세스 상태도 참고하기)
프로세스가 처음에 만들어 질 때, 바로 ready상태가 되는 것이 아니고, new에 있다가 admitted되면 ready 상태로 넘어온다. 이때 이 admitted 해주는 것이 장기스케줄러. 즉, 프로세스가 여러개를 실행시켰다고 했을 때, 무조건 다 cpu를 얻을 수 있는 것이 아니고 메모리에 당장 필요한 부분이 올라와야지만 cpu 기계어 실행이 가능하다. 처음에 프로세스가 시작될 때 메모리에 들어오도록 허락해주는 것이 장기스케줄러의 역할. 그런데 범용 운영체제들은 프로그램을 실행시키면 일단 다 실행이 된다. admitted하는 과정이 없다. 장기 스케줄러가 없다. (ppt time sharing system~부분)예전 시스템에는 존재했다. - 메모리를 준다 ⇒ 메모리에 올라간다.
- 그러면 time sharing system은 메모리를 관리하는 장기 스케줄러가 없는데 어떻게 메모리를 관리하냐? 중기 스케줄러 이용
- (프로세스 상태도 참고하기)
- 단기 스케줄러 : cpu를 누구에게 얼마나 줄지, 대단히 자주 호출 된다. 타이머 인터럽트가 걸릴때마다 단기 스케줄러가 호출된다.
- 중기 스케줄러 : 장기 스케줄러가 없어서 시작된 프로그램은 일단 다 메모리에 들어온다. 그리고 성능이 떨어지면 프로세스 몇 개를 골라서 메모리에서 쫓아낸다.
- degree of Multiprogramming : 메모리에 올라가있는 프로그램의 수
2. 프로세스의 상태 (참고)
- Suspended : 중기 스케줄러가 들어가면서 새로 추가된 상태
- 프로세스가 중기 스케줄러 때문에 메모리에서 쫓겨난 상태
- 꼭 중기 스케줄러에 의해 쫓겨난 경우만 말하지는 않는다.
- 원인의 공통점은 외부적인 요인이긴하다.
- blocked? suspended?
- 공통점 : 둘다 cpu를 얻을 수 없는 상태
- 차이점 : suspend의 개념으로 부터 위쪽은 정지된 것이 아니다. 프로세스가 계속 실행중인 것이다. 프로세스의 일생은 기계어를 실행하는 것 뿐만이 아니라 i/o를 실행하는 것도 일을 하는 것이다. suspend는 일을 아예 못하고 정지된 상태
프로세스의 관리4
+) 프로세스의 상태도
- ready 상태→ supended에 들어간 상태 : Suspended Ready
- Suspended 상태 → Blocked로 들어간 상태 : Suspended Blocked
- 외부에서 메모리를 뺏은 것이므로 외부에서 다시 메모리를 주어야한다.
1. Thread
- Thread(쓰레드) : cpu 수행 단위
- thread는 수행단위이기 때문에 program counter나 register을 별도로 가지고 있어야한다.
- 프로그램을 실행시킬 때 예를 들어 웹브라우저를 여러 개 띄워놓고 쓸 수 있다. 동일한 웹브라우저 프로그램이지만 여러개를 띄워놓으면 여러 프로세스가 되는 것. 그렇게 되면 각각 띄워놓은 웹브라우저가 각각의 프로세스이니까 각각의 코드데이터를 스택을 가진 메모리 주소공간이 만들어지고 pcb가 하나씩 만들어질 것이다. 그런데 이것을 좀 더 효율적으로 할 수는 없나? 웹 브라우저를 여러 개 띄우더라도 실행 파일이 같으니까 실행 코드는 같을 것이다.
→ 쓰레드를 두자 - 동일한 프로그램을 여러개 띄우더라도 프로세스가 한 개만 만들어지는 것이다. 코드 데이터 스택 구조가 하나만 만들어지고 여러개 띄어놓은 것은 서로 다른 부분의 코드를 실행할 수 있다. 이것만 따로 관리해주자.
⇒ cpu의 수행단위
- 웹브라우저에서 호텔사이트에 들어간다고 하면 네트워크로부터 웹페이지의 내용을 읽어온다.
⇒ 이 과정도 오래걸림. 이것도 io작업. 그런데 이때 cpu가 다른 프로그램에게 넘어가면 사용자는 답답함. 그래서 뭐라도 띄어놓으면 사람입장에서는 빠르다고 생각함.
- pcb : 프로세스 하나를 관리하기 위한 구조
- 쓰레드가 여러 개 있을 때는 공유하는 것들은 코드 데이터, 파일은 공유하고 있고, 쓰레드를 별도로 가지고 있는 것은 cpu 수행을 가진 레지스터와 메모리 주소공간 중에서는 스택이 있다.
2. Thread의 장점
- 응답성이 빠르다
- 하나의 스레드가 네트워크에서 무엇을 읽어오는 동안에 또 다른 스레드가 바로 화면에 무언가를 보여줌
- 자원을 공유하는 효과
- 스택 제외
- 똑같은 일을 프로세스 여러개가 하느냐 프로세스 안에 스레드를 여러개를 두느냐
- 스레드를 두는 것이 더 효과적이다.
- 병렬성을 추구할 수 있다.
3. Thread 구현 방법
- thread를 운영체제가 알고 있는 경우가 있다. ⇒ kernal thread
- 운영체제가 thread의 존재를 모름 ⇒ user thread
📑 출처
http://www.kocw.net/home/cview.do?cid=4b9cd4c7178db077
감사합니다😊
'🎥Etc > [kocw]운영체제' 카테고리의 다른 글
[Ch3]프로세스 관리5 (1) | 2023.06.25 |
---|---|
[Ch3]프로세스 관리2 (0) | 2023.06.25 |
[Ch3]프로세스 관리1 (0) | 2023.06.25 |
[Ch2]컴퓨터 시스템의 구조4 (0) | 2023.06.23 |
[Ch2]컴퓨터시스템의 구조3 (0) | 2023.06.23 |