들어가기에 앞서 예전에는 소프트웨어 적이였던 것이 현재는 하드웨어로 많이 바뀌었다고 한다. 프로세스와 스레드 os의 스케쥴링에 대해 학습.
프로세스 프로세서 둘의 용어는 엄연히 다르다 구분하자
CPU라는 하드웨어를 말한다.프로세스란 실행 중인 프로그램프로세스(process)는 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램을 말한다. 종종 스케줄링의 대상이 되는 작업(task)이라는 용어와 거의 같은 의미로 쓰인다.
라고 나무위키에 나와있다. 쉽게말해 .exe 같은 응용프로그램이 돌아가고 있는 상태 를 프로세스라 한다.
.exe 같은 프로그램이 실행 되려면(하드디스크,ssd) 같은 보조 기억장치에 존재해야하며 이것들은 데이터 묶음이라 볼수 있다. 이 데이터 묶음, 코드들이 메모리에 올라가게 되면 프로세스란 실행 중인 프로그램 프로세스가 된다.
여기서 눈여겨 봐야 할것은 하나의 cpu 하나의 프로세서는 하나의 일만 한다고 배웠다. 하지만 컴퓨터를 쓰면 유튜브로 노래를 들으면 게임도
다운 받을 수 있고 여러가지 일을 동시에 할 수 있다. 이것은 운영체제가 엄청나게 빠르게 CPU가 실행할 프로세스를 교체는 마법(멀티태스킹(Multi tasking)과 스케줄링 기법)이 일어난다.
프로세스의 상태 참고자료 https://jhnyang.tistory.com/7
https://jinshine.github.io/2018/05/17/%EC%BB%B4%ED%93%A8%ED%84%B0%20%EA%B8%B0%EC%B4%88/%EB%A9%94%EB%AA%A8%EB%A6%AC%EA%B5%AC%EC%A1%B0
프로세스,프로세서,프로그램 참고자료 https://blogger.pe.kr/422
비선점형과 선점형 으로 구분된다.스케쥴링
프로세스 관련:https://studymake.tistory.com/620 운영체제 관련:https://jhnyang.tistory.com/33 https://www.tutorialspoint.com/what-is-process-control-block-pcb
참고자료:https://ko.wikipedia.org/wiki/%EC%8A%A4%EC%BC%80%EC%A4%84%EB%A7%81_(%EC%BB%B4%ED%93%A8%ED%8C%85)
스케줄링 기법: https://www.uname.in/252
우선순위 스케줄링 알고리즘: Windows에서 채택하고 있는 대표적인 선점형 스케줄링 알고리즘 우선순위가 높은 프로세스를 먼저 실행하는 알고리즘이다.
우선순위가 높은 프로세스가 작업을 마쳐야 그 다음 우선순위 프로세스가 실행된다.
우선순위 정하는 방법 : 프로세서 버스트 시간의 역이다. 프로세서 버스트 시간이라는 것은 프로세스 실행 시간과 동치이다 즉 실행 시간이 많을수록 우선쉰위가 낮다.
낮은 우선순위의 프로세서들이 봉쇄되는 문제로 노화(aging) 오랫동안 시스템에서 대기하는 프로세스들의 우선순위를 점진적으로 증가시키는
방법으로 해결가능 다른 방법은 로빈 스케줄링을 결합하는 방법이다. 이것은 윈도우에서 사용하는 방법이다.
컴퓨터는 크게 cpu , 메모리, disk 로 나눠져있다 이것을 입출력(i/0)를 가진다 이것을 폰노이만 구조라한다
cpu: AlU와 레지스터를가짐 캐쉬메모리라는걸 가짐
메모리: 임시 저장공간
disk(SSD,하디디스크) 개발자가 컴퓨터 언어로짠 프로그램이 저장되는 공간
에를들어 프로그래머가 java,c등 프로그래밍 언어로 짠 프로그램이 하드디스크에 있고, 이것을 실행할 때 컴퓨터는 결국 바이너리 파일을 읽을 수 있기 때문에 (컴파일)이라는 과정을 통해 읽을 수 있게
변화된다.ex) .exe 같은 파일로 변경 되며 이러한 과정에서 코드부분과 리소스(자원) 부분을 가지게된다 이때 메모리는 코드부분과 리소스부분의 일정 부분을 참고하게된다. (메모리에 올라오게 된다)
이러한 디스크에서 메모리에 올라 가는 순간을 프로세스 라한다 이것은 전에 배웠던 load, sotre와같은 명령어들의 집합이며 이명령어들의 일부는 cpu(프로세서)의 레저스터가 명령어를 처리한다.
이때 프로세스가 된 수많은 실행되고 있는 파일(프로그램) 들을 프로세서가 얼마만큼의 시간을 줄지, 어떤 프로세스를 먼저 실행할지에 대한 관리를 스케쥴링 이라한다. 이떄 os가 스케쥴링을 할때 다양한
알고리즘이나 방식 들이 있는데 대표적인 것이 선점형스케쥴링 이다.
이 밖에도 다양한 방식의 스케쥴링이 존재한다. 메모리는 disk와 소통하면서 어떤 데이터가 나가고 들어올지를
교체해야한다. (메모리 관리) 이 모든 동작을 하는 것을 os운영체제라 한다 cpu,메모리,disk같은 하드웨어들을 위와 같은 방식들로 잘 동작 할 수 있게하는 것이다.
(요즘은 실제로 멀티 코어를 사용하긴한다) 프로세스 는 5가지의 상태를 가진다 스케줄링 기법이란
CPU를 최대한 활용하기위해 스케줄러를 통해 프로세서들의 cpu 점유를바꿔 주는 작업이다. (여기서 다양한 알고리즘들을 통해 스케줄링을 한다).