보글보글 개발일지
article thumbnail
Published 2023. 3. 8. 23:24
[OS] 프로세스 코딩기록/CS
반응형

프로세스를 이해하기 위해서는, 프로그램, 프로세스, 스레드를 모두 이해해야 한다.

프로그램

  • 실행파일. 어떤 일을 수행하기 위해 만들어진 명령 모음 (정적)
    • 파일이 저장 장치에 저장되어 있지만 메모리에는 올라가 있지 않은 정적인 상태

프로세스

  • 프로세스 간에는 메인 메모리 공간 분리
  • 생성될 때 각각 별도의  주소공간에 할당되며 코드, 데이터, 힙, 스택 영역을 가지고 있다
  • 멀티 프로세스의 장점으로는, 각 프로세스간 독립적으로 동작하기 때문에 서로 영향을 끼치지 않습니다.
  • 한 프로세스가 다른 프로세스의 자원에 접근하려면 프로세스 간의 통신(IPC, inter-process communication)을 사용해야 한다. (Ex. 파이프, 파일, 소켓 등을 이용한 통신 방법 이용)
  • 프로세스 단점
    • 멀티 프로세싱의 방식은 CPU에서 여러 프로세스를 로테이션으로 돌면서 처리(스케쥴링 알고리즘) -> Context Switching 
    • 이러한 일련의 과정을 프로세스는 각각 독립된 메모리 영역이다 보니 캐쉬 메모리 초기화 등 꽤나 무거운 작업이 진행되고 오버헤드가 발생
    • 동작중인 프로세스가 대기를 타면서 해당 프로세스의 상태(Context)를 보관하고, 대기하고 있던 다음 순번의 프로세스가 동작하면서 이전에 보관했던 프로세스의 상태(Context)를 복구

PCB

  • Process Control Block
  • 운영체제가 프로세스에 대한 중요한 정보(process metadata)를 저장해 놓을 수 있는 저장 장소를 뜻합니다.
  • 컨택스트 스위칭을 위해 CPU 레지 값과 PC등을 저장

 

  • 필요한 이유?
    • CPU에서는 프로세스의 상태에 따라 교체 작업이 이루어집니다. (인터럽트가 발생해서 할당받은 프로세스가 Block 상태가 되고 다른 프로세스를 running으로 바꿀 때) 이때, 앞으로 다시 수행할 Block 상태의 프로세스의 상태값을 PCB에 저장해두는 것입니다. 이렇게 수행 중인 프로세스를 변경할 때, CPU의 레지스터 정보가 변경되는 것을 Context Switching이라고 합니다.
  • PCB의 위치?
    • PCB가 프로세스의 중요한 정보를 포함하고 있기 때문에, 일반 사용자가 접근하지 못하도록 보호된 메모리 영역 안에 남는다. 일부 운영 체제에서 PCB는 커널 스택의 처음에 위치한다. (이 메모리 영역은 편리하면서도 보호를 받는 위치이기 때문이다.)
  • 그렇다면 스레드는 PCB를 갖고 있을까?
    • 스레드는 따로 TCB(Thread Controll Block)를 가진다

 

참고: https://medium.com/pocs/process와-thread의-차이-afd03c18edc4

 

스레드

  • 스레드는 한 프로세스 안에 하나 이상 진행될 수 있는 일의 단위. 프로세스를 또 나눈 단위. 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위.
    • 실행 가능한 가장 작은 단위
    • 스레드는 프로세스 내에서 각각 Stack만 따로 할당받고 Code, Data, Heap 영역은 공유한다.
    • 스레드는 한 프로세스 내에서 동작되는 여러 실행의 흐름으로, 프로세스 내의 주소 공간이나 자원들(힙 공간 등)을 같은 프로세스 내에 스레드끼리 공유하면서 실행된다.
    • 같은 프로세스 안에 있는 여러 스레드들은 같은 힙 공간을 공유한다. 반면에 프로세스는 다른 프로세스의 메모리에 직접 접근할 수 없다.
    • 각각의 스레드는 별도의 레지스터와 스택을 갖고 있지만, 힙 메모리는 서로 읽고 쓸 수 있다.
    • 한 스레드가 프로세스 자원을 변경하면, 다른 이웃 스레드(sibling thread)도 그 변경 결과를 즉시 볼 수 있다
    • 장점
      • 메모리를 공유하다보니 독립적인 프로세스와는 달리 스레드간 데이터를 주고 받는게 간단해지고 시스템 자원 소모가 감소. 응답 시간 단축
      • 멀티프로세싱의 단점인 Context Switching의 오버헤드에 대한 부분을 해결
      • 프로세스와는 달리 Code, Data, Heap 영역을 공유하므로 Stack 영역만 처리를 하면 되고 그 결과 처리 비용이 감소
      • 프로세스 Context Switching의 경우 캐쉬 메모리를 초기화 하게 되지만 스레드는 메모리를 공유하므로 꽤 큰 처리 비용이 드는 초기화를 할 필요가 사라짐.
    • 단점
      • 서로 데이터를 사용하다가 충돌이 일어날 가능성 존재
      • 디버깅이 다소 까다로워 집니다. (버그 생성될 가능성 증가)
      • 하나의 스레드가 다른 스레드의 영향을 끼칠 수 있음.
      • 자원을 공유하기 때문에 필연적으로 동기화 문제 발생

 

데몬 프로세스

  • 데몬(daemon) 이란 서비스의 요청에 대해 응답하기 위해 오랫동안 실행중인 백그라운드(background) 프로세스다. 유닉스(리눅스 포함) 운영체제에서 이름이 "d"로 끝나는 프로세스들이 대표적인데 inetd, httpd, nfsd, sshd, named와 lpd 등이 있다.
  • 포그라운드 프로세스는 인터넷 브라우저, 인텔리제이, 카카오톡 등, 눈에 보이는 프로그램을 말하는데요. 반면 백그라운드 프로세스는 백신 프로그램이나, 그래픽 드라이버와 같이 눈에 보이지 않는 프로그램들을 말하는 것입니다.
  • 또한 포그라운드 프로세스의 경우 사용자와 대화할 수 있는 표준 입출력 장치 즉, 터미널과 키보드(tty 또는 pts)를 사용하지만, 백그라운드 프로세스의 경우 사용자에게 어떤 장치를 통해 값을 전달받는 것이 아니라, 스스로 동작하는 프로세스를 의미합니다.
    •  
 

데몬(daemon) 프로세스란 무엇인가?

오늘. 누군가가 "데몬(daemon) 프로세스"가 도대체 뭔가요?"라는 질문 던진 것을 인터넷의 한 게시판에서 봤다. 많은 개발자나 엔지니어들이 IT 바닥에서 일을 하면서도 쉽게 접하기 어려운 분야가

blogger.pe.kr

 

건강한개발자

개발에 올인. 레벨업 하자

gona.tistory.com

 

 

[OS] 프로세스와 PCB 그리고 스레드

📋 목차 서론 프로세스란 무엇인가 프로세스 제어 블록(Process Control Block, PCB) 스레드란 무엇인가 정리 ⛳ 서론 프로세스랑 스레드는 면접 단골 질문이라고 칭할만큼 이제는 필수적으로 알아야

yoon-dumbo.tistory.com

 

추후 알아볼 내용

고아 프로세스, 자식 프로세스

반응형

'코딩기록 > CS' 카테고리의 다른 글

[OS] 단기, 중기, 장기 스케줄러  (0) 2023.03.09
[OS] 프로세스 메모리 구조  (0) 2023.03.09
[OS] 인터럽트  (0) 2023.03.08
[OS] 시스템 콜  (0) 2023.03.08
[OS] 운영체제  (0) 2023.03.08
profile

보글보글 개발일지

@보글

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!