CS_프로세스와 스케쥴링

이경환·2023년 2월 7일

CS

목록 보기
1/6
post-thumbnail

학습 계획

들어가기에 앞서 예전에는 소프트웨어 적이였던 것이 현재는 하드웨어로 많이 바뀌었다고 한다. 프로세스와 스레드 os의 스케쥴링에 대해 학습.

프로세스

  • 프로세스 프로세서 둘의 용어는 엄연히 다르다 구분하자

    • 프로세서 : 소프트웨어적, 하드웨어적 프로세서로 말할 수 있으며 Processor (프로세서)는 하드웨어적인 측면에서 "컴퓨터 내에서 프로그램을
    • 수행하는 하드웨어 유닛"이다. 폰노이만 구조의 아킥테처는 ALU,처리 레지스터를 가지며 결론적으로 CPU라는 하드웨어를 말한다.
    • 프로세스 : 프로세스란 실행 중인 프로그램
    • 프로그램 : 운영체제위에서 Data를 가지는 코드들 카카오톡,게임 등
  • 프로세스(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

스케줄링

  • 스케줄링(scheduling)은 다중 프로그래밍을 가능하게 하는 운영 체제의 동작 기법이다. 운영 체제는 프로세스들에게 CPU 등의 자원 배정을 적절히
    함으로써 시스템의 성능을 개선할 수 있다. 위키백과에 나온다
  • 핵심은 os가 한정적인 자원인 cpu를 프로세스들 에게 우선순위를 관리하는 정책, 방식을 말한다.
  • 스케줄링은 1~3 단계로 되어있고 비선점형과 선점형 으로 구분된다.
    • 선점형 : 어떤 프로세스 cpu에 할당받아 실행중이더라도 운영체제가 cpu를 강제로 뺏을 수 있다. 보통은 선점형 방식을 쓴다
    • 비선점형 : 일이 시작되면 다른 cpu가 뺏을 수 없다. 할당 받은 cpu는 끝날 때 까지 사용함.
    • 고수준 스케줄링 : 프로세스를 줄을 서게한다. job 작업스케줄러 디스크에 있는 프로그램들을 선택해서 실행을 위해 메모리로 적재(load) 한다.
    • 저수준 스케줄링 : 프로세스 스레드를 선점해서 작동하게한다.
  • 프로세스 상태 생성, 준비, 실행, 대기, 종료까지 5가지 상태가 있다. 프로세스를 생성하고 계속해서 실행하지 않고, 다른 프로세스를 실행하는 동안 대기했다가
    다시 실행하는 순서를 반복하게 된다. 이러한 프로세스를 다양한 방식으로 동작순서를 정하는 것이 스케쥴링

프로세스 관련: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에서 채택하고 있는 대표적인 선점형 스케줄링 알고리즘 우선순위가 높은 프로세스를 먼저 실행하는 알고리즘이다.
    우선순위가 높은 프로세스가 작업을 마쳐야 그 다음 우선순위 프로세스가 실행된다.

    • 장점 :각 프로세스의 상대적 중요도를 명시 할 수 있다. 실시간 시스템에 유리하다
    • 단점 :높은 우선순위 프로세스가 계속 오면 우선순위가 낮은 프로세스는 Starvation(기아 상태) 현상을 겪을 수 있다.
  • 우선순위 정하는 방법 : 프로세서 버스트 시간의 역이다. 프로세서 버스트 시간이라는 것은 프로세스 실행 시간과 동치이다 즉 실행 시간이 많을수록 우선쉰위가 낮다.

  • 낮은 우선순위의 프로세서들이 봉쇄되는 문제로 노화(aging) 오랫동안 시스템에서 대기하는 프로세스들의 우선순위를 점진적으로 증가시키는
    방법으로 해결가능 다른 방법은 로빈 스케줄링을 결합하는 방법이다. 이것은 윈도우에서 사용하는 방법이다.

PCB

  • 운영체제가 프로세스를 제어하기 위해 정보를 저장해 놓는곳 으로 pcb는 프로세스 생성 시 만들어지며 주기억장치에 유지된다. 운영체제가 프로세스의 메우 중요한 정보들을 저장해 놓는 저장장소이다.

컴퓨터 구조와 운영체제 정리

  • 컴퓨터는 크게 cpu , 메모리, disk 로 나눠져있다 이것을 입출력(i/0)를 가진다 이것을 폰노이만 구조라한다

  • cpu: AlU와 레지스터를가짐 캐쉬메모리라는걸 가짐

  • 메모리: 임시 저장공간

  • disk(SSD,하디디스크) 개발자가 컴퓨터 언어로짠 프로그램이 저장되는 공간

  • 에를들어 프로그래머가 java,c등 프로그래밍 언어로 짠 프로그램이 하드디스크에 있고, 이것을 실행할 때 컴퓨터는 결국 바이너리 파일을 읽을 수 있기 때문에 (컴파일)이라는 과정을 통해 읽을 수 있게
    변화된다.ex) .exe 같은 파일로 변경 되며 이러한 과정에서 코드부분과 리소스(자원) 부분을 가지게된다 이때 메모리는 코드부분과 리소스부분의 일정 부분을 참고하게된다. (메모리에 올라오게 된다)

    이러한 디스크에서 메모리에 올라 가는 순간을 프로세스 라한다 이것은 전에 배웠던 load, sotre와같은 명령어들의 집합이며 이명령어들의 일부는 cpu(프로세서)의 레저스터가 명령어를 처리한다.

    이때 프로세스가 된 수많은 실행되고 있는 파일(프로그램) 들을 프로세서가 얼마만큼의 시간을 줄지, 어떤 프로세스를 먼저 실행할지에 대한 관리를 스케쥴링 이라한다. 이떄 os가 스케쥴링을 할때 다양한
    알고리즘이나 방식 들이 있는데 대표적인 것이 선점형스케쥴링 이다.

    이 밖에도 다양한 방식의 스케쥴링이 존재한다. 메모리는 disk와 소통하면서 어떤 데이터가 나가고 들어올지를
    교체해야한다. (메모리 관리) 이 모든 동작을 하는 것을 os운영체제라 한다 cpu,메모리,disk같은 하드웨어들을 위와 같은 방식들로 잘 동작 할 수 있게하는 것이다.

우선순위

  • 프로세서는 1~4 등 프로세스에 비해 상대적으로 수가 적다. 그렇기 때문에 os는 수많은 프로세스들중 우선순위를 부여할 필요가있다.
  • 프로세스 상태를 만들자. 프로세스 뿐만아니라 쓰레드도 우선순위를 줄수있다. 5단계까지 존재한다. ex) 미디어 동영상은 우선순위가 매우높음 압축해제는 매우낮음.
    (보통 매우낮은걸 백그라운드 처리한다 한다.)

정리

  • 컴퓨터의 CPU(프로세서)는 여러개의 프로세스를 동시에 실행할 수 없다. 오직 1개의 프로세스를 수행한다. 운영체제의 멀티태스킹 과 스케줄링 기법으로
    여러개의 프로세스가 동시에 실행되는 것처럼 보일뿐이다.

(요즘은 실제로 멀티 코어를 사용하긴한다) 프로세스 는 5가지의 상태를 가진다 스케줄링 기법이란
CPU를 최대한 활용하기위해 스케줄러를 통해 프로세서들의 cpu 점유를바꿔 주는 작업이다. (여기서 다양한 알고리즘들을 통해 스케줄링을 한다).

profile
개선하는 개발자, 이경환입니다

0개의 댓글