프로세스란??

박우현 (Joshua)·2023년 8월 6일
0

프로세스(Process)

프로세스란 실행중인 프로그램을 뜻하며 스케쥴링의 대상이 되는 작업(Task)과 같은 의므로 사용된다. 프로세스의 내부에는 최소 하나의 스레드(Thread)가 존재 하며 이 스레드단위로 스케쥴링이 된다. 하드디스크에 있는 프로그램을 실행하면, 실행을 위해서 메모리 할당이 이루어지고, 할당된 메모리 공간으로 바이너리 코드가 올라가게 된다. 이 순간부터 프로세스라 불린다.

프로세스의 메모리 구조

  • Code 영역 : 프로그램을 실행시키는 실행 파일 내의 명령어
    (쉽게 말하면 소스코드가 올라간다고 생각하면 됨)
  • Data 영역 : 전역변수, static 변수의 할당.
  • Heap 영역 : 동적할당을 위한 메모리 영역.
    • C언어 : malloc & free // C++ : new & delete // JAVA : new & (java에서 메모리 해제는..가비지컬렉터가 알아서해주는거로 앎..아니면 객체 null)
  • Stack 영역 : 지역변수, 함수 호출시 전달되는 인자(파라미터)를 위한 메모리 영역.

프로세스 스케쥴링

CPU는 하나인데 동시에 실행되어야 할 프로세스가 여러개면?????
-> CPU가 고속으로 여러 프로세스를 일정한 기준으로 순서를 정해서 실행.

  • 스케줄링(Scheduling)
    • CPU 할당 순서 및 방법을 결정하는 일. (어떤 프로세스를 running 상태로 보낼까?)
    • 일정한 기준 : scheduling algorithm 사용
      • 대부분의 OS에서는 우선순위(Priority algorithm) 알고리즘과 라운드 로빈(Round Robin) 알고리즘을 혼합해서 스케줄링 하는 것으로 알고 있다.

프로세스의 상태 변화

프로세스의 상태는 크게 ready, blocked, running 상태가 존재.

  • new -> ready - new 상태에서 프로세스가 생성되게 되면 OS 커널에 존재하는 Ready Queue에 올라간다.
  • ready -> running - Ready Queue에 있는 프로세스들을 OS가 위에서 말한 프로세스 스케줄링 알고리즘에 의해서 Running 상태로 가야할 프로세스를 CPU로 할당. 그러면 프로세스가 Running 상태가 됨.
  • running -> ready - 현재 running 상태에 있는 프로세스A 보다 Ready Queue에서 대기하고 있는 프로세스 B가 우선순위가 높으면, pre-emptive schedule(선점형)인 경우 프로세스A는 Ready 상태로 오게되고 프로세스B가 running 상태로 가서 CPU를 할당.
  • running -> blocked/waiting - 현재 running 상태에 있는 프로세스A에서 입출력(I/O) 이벤트가 발생했을때 프로세스A가 blocked/waiting 상태가 됨.
  • blocked/waiting -> ready - 입출력(I/O)이벤트가 종료된 프로세스는 다시 Ready상태 변경.
  • running -> terminate - 프로세스 종료.
    • ready, blocked 상태에는 여러 프로세스가 존재할수 있다.
    • 하지만, 싱글코어CPU에서, running 상태의 프로세스는 단 하나만 존재.

스레드

프로세스라는 것이 사실은 큰 여러 스레드가 존재하는 통? 같은 것이고 실제로 상태변화를 하거나 컴퓨터에서 task로 사용하는 단위는 Thread 이다.

  • 간단히 말하자면 스레드(Thread)는 프로세스 내부의 작업의 흐름, 단위이다.
  • 스레드(thread)는 한 프로세스(process)내부에 적어도 하나가 존재한다.
  • 스레드(thread)가 여러개 존재하는것을 멀티스레드(Mulitread)라고 한다.
    • 멀티스레드(Multitread)에서 각 스레드끼리는 프로세스의 일정 메모리 영역을 공유한다.
    • 일정 메모리 영역을 공유 하기 때문에 동일한 프로세스 내부의 스레드 간 문맥전환(context switching) 할때가, 프로세스 끼리 문맥전환(context switching)을 할때보다 빠르다. 그 이유는, 상대적으로 스위치 해야 할 메모리 영역이 적기 때문이다.

출처:
위키

profile
매일 매일 성장하자

1개의 댓글

comment-user-thumbnail
2023년 8월 6일

정리가 잘 된 글이네요. 도움이 됐습니다.

답글 달기