본문 바로가기
CS/운영체제

[운영체제] 프로세스와 쓰레드

by 창이2 2021. 5. 16.

1. 프로세스와 프로그램

  • 프로그램 :  컴파일된 코드와 전역 변수 등의 정적 데이터를 가진 정걱인 개체
  • 프로세스 : 프로세스는 현재 메모리에 올라가 동작중인 프로그램
  • 멀티프로세싱 : 여러개의 CPU에서 여러개의 프로세스를 처리하는 것
  • 멀티프로그래밍 : 1개의 CPU에서 여러개의 프로세스를 처리하는 것
  • 멀티태스킹 : 다수의 작업(프로세스, 쓰레드 등)을 운영체제 스케줄링에 의해 번갈아가면서 처리하는것

※ 멀티프로그래밍과 멀티태스킹 차이 : 멀티프로그래밍은 프로세스가 Idle일때 실행되고

   멀티태스킹은 정해진 시간동안 번갈아가면서 실행

2. 프로세스의 메모리 구조

프로세스는 4개의 영역으로 나누어져 있다.

     1) 스택 : 지역변수나 매개변수들이 저장되는 공간, Top-Down방향으로

                높은 메모리 주소에서 낮은 메모리 주소로 할당됨

     2) 힙 : 동적으로 생성된 객체들이 저장되는 공간, Bottom-Up방향으로

               낮은 메모리 주소에서 높은 메모리 주소로 할당됨

     3) 데이터 : 전역변수나 정적변수들이 저장되는 공간

 

     4) 코드 : 코드영역은 컴파일된 코드를 저장하는 영역이며 읽기 전용영역이다.

                실행중에 코드를 수정하면 안되기 때문이다.

     ※ 재진입 프로그램 : 같은 프로그램이지만 별개의 프로세스로 인식 할 수 있게 만든 프로그램(ex 메모장)

 

3. 프로세스의 상태변화

     1) 프로세스가 생성된 후 ready 상태로 변경

     2) 디스패쳐 의해 ready -> running 상태로 변경(cpu에 할당된 상태)

     3) 프로세스가 완료되면 종료

     4) 완료되지 않은 상태에서 할당시간을 넘었을때 running -> ready로 변경

     5) 완료되지 않은 상태에서 이벤트나 IO신호가 일어났을때 running -> wait로 변경

     6) 이벤트 또는 IO신호 처리가 끝났을때 wait -> ready로 변경

 

4. 인터럽트

     인터럽트는 흐름의 변화를 의미한다. 크게 내부(소프트웨어) 인터럽트와 외부(하드웨어) 인터럽트가 있다.

     

     내부 인터럽트 : 프로세스 내부에서 발생하는 인터럽트이며 트랩이라고도 불린다. 발생하는 시점이 고정되어있다.

 

     외부 인터럽트 : IO신호에 의해 발생하는 인터럽트이다.

 

5. 쓰레드

     쓰레드는 프로세스 안에 존재하는 경량화된 프로세스라고 불린다.

프로세스 안에서 독립적으로 수행을 하며 프로세스의 스택을 제외한 힙, 코드, 데이터 영역을 공유한다.

 

  • 장점 : 프로세스의 자원공유, 다중처리로 효율성 증가, 프로세스 문맥교환보다 오버헤드가 줄어들음
  • 단점 : 자원공유로 인한 문제

'CS > 운영체제' 카테고리의 다른 글

[운영체제] 상호배재와 교착상태  (0) 2021.05.24

댓글