CS

운영체제, 프로세스와 스레드, 멀티 프로세스와 멀티 스레드

Lahezy 2023. 2. 23.
728x90

 운영체제

운영체제란 (Operating System) 사용자의 하드웨어, 시스템 리소스를 제어하고 프로그램에 대한 일반적인 서비스를 지원하는 시스템 소프트 웨어이다.

운영체제의주된 목적은 컴퓨터에 존재하는 메모리, 키보드 등의 인터페이스, cpu, 네트워크 등을 잘 관리해 줘야 컴퓨터를 효율적으로 사용할 수 있게 하는 것이다. 부가적으로 사용자에게 편의를 제공하는 기능을 제공한다.

즉, 운영체제는 컴퓨터의 성능을 높이고 사용자에게 편의성을 제공하는 하드웨어 관리 프로그램이다. 

  • 운영체제 구성
    • 커널
      • 운영체제의 중요 요소로 일반인이 일반적으로 보지 못하는 낮은 수준의 프로세스를 제어한다. 
      • 얼마만큼의 메모리를 읽고 쓸 것인지, 어느 프로세스를 실행할 것인지, 모니터, 키보드, 마우스와 같은 장치를 통해 어떠한 정보를 주고받을 것인지, 네트워크를 통해 받은 정보를 어떻게 해석할 것인지를 제어한다. 
    • 사용자 인터페이스
      • 컴퓨터 사용자가 직접 프로그램을 제어하고 사용할 수 있게 하는 운영체제의 기능
  • 운영체제의 목적
    • 사용자에게 컴퓨터의 프로그램을 쉽고 효율적으로 실행할 수 있는 환경 제공(사용자의 편리성)
    •  컴퓨터시스템 하드웨어 및 소프트웨어 자원을 여러 사용자 간에 할당, 관리, 보호한다.(자원 보호, 자원 관리) 
    • 운영체제는 제어 프로그램으로 사용자의 프로그램 오류나 잘못된 자원 사용을 감시한다. 
    • 입출력장치등의 자원에 대한 연산과 제어를 관리한다.

✨ 프로세스와 스레드

 

프로세스와 스레드

⭐️ 프로세스(Process) : 실행 중인 프로그램, 컴퓨터에서 실행되고 있는 프로그램 메모리에 올라와 실행되고 있는 프로그램 인스턴스 운영체제로 부터 시스템 자원을 할당받는 단위 각 프로세스

lahezy.tistory.com

  • 프로세스(Process) : 실행 중인 프로그램, 컴퓨터에서 실행되고 있는 프로그램
    • 메모리에 올라와 실행되고 있는 프로그램 인스턴스
    • 운영체제로 부터 시스템 자원을 할당받는 단위
    • 각 프로세스는 각각의 분리된 메모리 영역(Text, Data, BSS, Heap, Stack)을 가진다.
    • 기본적으로는 프로세스 1개당 1개의 스레드를 가진다( 즉 스레드는 프로세스에 안에서 )
    • IPC(Inter process communication) : 한 프로세스와 다른 프로세스가 통신하는 방법
    • 커널 내에 준비 큐, 대기 큐, 실행 큐 등의 자료구조를 활용하여 프로세스의 상태를 관리한다. 
  • 스레드 : 프로세스 내에서 실제로 작업을 수행하는 주체
    • 모든 프로세스는 한 개 이상의 스레드가 있다.
    • 프로세스가 할당받은 자원을 이용하는 실행의 단위
    • 자신이 속한 프로세스의 메모리(code, data, heap)를 공유한다. stack만 따로 할당받는다.(프로세스는 공유하지 않는다. 자신만의 독립된 메모리 공간을 이용하고 다른 프로세스의 메모리에 직접 접근이 불가능하다.)
    • 각 스레드가 프로세스의 메모리를 공유하여 사용하기 때문에 시스템의 낭비가 적어진다.
  • 즉, 스레드는 프로세스 내에서 실제로 작업을 실행하는 주체이고 프로세스는 메모리를 공유하지 않지만 스레드는 메모리를 공유해서 시스템의 낭비가 적어진다.

 

 멀티 스레드

  • 멀티 스레드란?
    • 일반적으로 하나의 프로세스는 하나의 스레드를 가지고 작업하지만  두 개 이상의 스레드가 동시에 작업하는 것을 의미한다.
    • 한 프로그램 안에서 병렬 처리 하는 것이다. 
  • 단점 :
    • 구현이 어렵다. 주의 깊은 설계, 디버깅이 어렵다
    • 자원을 공유하기 때문에 동기화 문제가 일어날 수 있다(데드락, 병목현상)
    • 하나의 스레드에 문제가 생기면 전체 프로세스가 영향을 받는다. 장점
  • 장점 :
    • 프로세스를 생성하는 비용보다 싸다
    • 메모리를 공유해서 효율적이다.(시스템 자원을 효율적 사용가능. 처리 비율 증가)
    • 간단한 통신 방법을 사용해서 프로그램 응답 시간이 단축된다.

 멀티 프로세스

  • 멀티 프로세스란?
    • 여러개의 프로세서가 협력적으로 하나 이상의 작업을 처리하는 것이다
    • 다수의 프로세서가 여러 작업을 함께 처리하는, 여러 개의 프로세스를 사용하는것이다
    • 여러 개의 프로그램들을 병렬처리한다.
  • 장점 :
    • 하나 고장 나도 다른 프로세서에서 실행가능(독립된 구조로 안전성이 높다)
  • 단점 :
    • 각각의 독립된 메모리를 할당받아서 변수공유가 어렵다.

즉, 멀티 스레드는 멀티 프로세스보다 적은 메모리 공간을 사용하고 context switching이 빠르지만 동기화 문제로 하나의 스레드에 문제가 생기면 전체 스레드가 종료될 수도 있다. 멀티 프로세스는 독립적이어서 다른 프로세스에 영향을 미치지 않고 멀티 스레드 보다 많은 메모리 공간과 cpu를 차지한다

 


 ➕ 스레드에 스택을 독립적으로 할당하는 이유?

스택은 함수 호출 시에 전달되는 인자, 작업 후 되돌아갈 주소값을 가지고 있는 메모리 공간이다. 스택 메모리 공간을 독립적으로 사용함으로써 독립적인 함수 호출이 가능하고 독립적인 실행 흐름을 가지게 되는 것이다. 따라서 스레드는 독립적인 실행 흐름을 가지기 위해서 자신만의 스택을 가지고 있다.

➕ PC레지스터를 스레드마다 독립적으로 할당하는 이유?

PC값은 스레드의 명령어가 어디까지 실행되었는지 나타낸다 스레드는 CPU를 할당받았다가 스케쥴러에 의해 다시 선점한다(우선권을 가져간다) 따라서 스레드는 독립적인 실행흐름으로 자신의 명령어가 어디까지 수행했고 어디 부분이 수행되지 못했는지 알기 위해서 PC 레지스터를 독립적으로 가진다.

 

[참고]

https://cocoon1787.tistory.com/685

https://velog.io/@vpdls1511/%EC%8A%A4%EB%A0%88%EB%93%9C%EC%9D%98-%EC%8A%A4%ED%83%9D%EA%B3%BC-%EB%A0%88%EC%A7%80%EC%8A%A4%ED%84%B0

https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html

728x90

'CS' 카테고리의 다른 글

프로세스와 스레드  (0) 2023.02.09
DataBase  (0) 2023.01.15
IP와 TCP/UDP  (0) 2022.12.08

댓글