본문 바로가기
CS

[CS / 운영체제] 3.3 프로세스와 스레드 - 2

by 개발하는 감자입니다 2024. 5. 27.
728x90

 

안녕하세요! 개발감자입니다.

오늘은 CS의 운영체제 중에서도 3.3 프로세스와 스레드에 대해서 정리해보았습니다.

3.3.4 PCB

  • PCB(Process Control Block)
    • 운영체제에서 프로세스에 대한 메타데이터를 저장한 데이터
    • 프로세스 제어 블록
    • 프로세스 생성 시 운영체제는 그 프로세스에 해당하는 PCB를 생성함.
    • 프로세스의 중요한 정보를 포함 → 일반 사용자가 접근하지 못하는 커널 스택의 가장 앞부분에서 관리
    • 메타데이터 : 데이터에 관한 구조화된 데이터를 설명하는 작은 데이터
  • PCB의 구조
    • 프로세스 스케줄링 상태 : 프로세스가 CPU에 대한 소유권을 얻은 후의 상태 (준비, 일시 중단 등)
    • 프로세스 ID : 프로세스 ID, 해당 프로세스의 자식 프로세스 ID
    • 프로세스 권한 : 컴퓨터 자원 또는 IO 디바이스에 대한 권한 정보
    • 프로그램 타운터 : 프로세스가 실행할 다음 명령어 주소에 대한 포인터
    • CPU 레지스터 : 프로세스를 실행하기 위해 저장해야 할 레지스터에 대한 정보
    • CPU 스케줄링 정보 : CPU 스케줄러에 의해 중단된 시간 등에 대한 정보
    • 계정 정보 : 실행한 유저의 정보
    • IO 상태 정보 : 프로세스에 할당된 IO 디바이스 목록
  • 컨텍스트 스위칭 (context switching)
    • PCB를 교환하는 과정
    • 한 프로세스에 할당된 시간이 끝나거나 인터럽에 의해 발생
    • 컴퓨터의 프로그램이 동시 실행되는 것 처럼 보이는 것 → 다른 프로세스와의 컨텍스트 스위칭이 아주 빠른 속도로 실행되는 것임
    • 현대 컴퓨터는 멀티코어의 CPU를 가지기 때문에 컨테스트 스위칭을 설명할 때에는 컴퓨터가 싱글코어라고 가정하고 설명을 한다.

3.3.5 멀티 프로세싱

프로세스가 여러 개라는 의미 즉, 멀티 프로세스를 통해 동시에 두 가지 이상의 일을 수행할 수 있는 것

신뢰성이 높음 → 일부 프로세스에서 문제가 생기더라도 다른 프로세스에서 처리할 수 있음

  • 웹 브라우저
    • 멀티 프로세스 구조를 가짐
    • 브라우저 프로세서, 렌더러 프로세스, 플러그인 프로세스, GPU 프로세스
  • IPC (Inter Process Communication)
    • 멀티 프로세스의 메커니즘 : 프로세스끼리 데이터를 주고받고 공유 데이터를 관리
    • 예시 : 클라이언트가 데이터를 요청하고 서버는 클라이언트 요청에 응답하는 것
    • 종류 : 공유 메모리, 파일, 소켓, 익명 파이프 등 ⇒ 스레드(메모리 완전 공유) 보다는 공유 속도가 떨어짐

3.3.6 스레드와 멀티 스레딩

  • 스레드 : 프로세스의 실행 가능한 가장 작은 단위
  • 프로세스는 여러 스레드를 가질 수 있음
  • 프로세스는 코드, 데이터, 스택, 힙을 각각 생성하지만, 스레드는 코드, 데이터, 힙을 서로 공유한다. 그외는 각각 생성된다.
  • 멀티 스레딩
    • 프로세스 내 작업 여러 개의 스레드, 멀티 스레드로 처리하는 기법
    • 스레드끼리 서로 자원 공유 → 효율성이 높음
    • 예시 : 웹 요청 처리 시 새 프로세스 생성 대신 스레드를 사용하는 웹 서버를 활용 (빠른 처리와 동시성)

3.3.7 공유 자원과 임계 영역

  • 공유 자원
    • 시스템 안에서 각 프로세스, 스레드가 함께 접근할 수 있는 모니터, 프린터, 메모리, 파일, 데이터 등의 자원이나 변수 등
    • 경쟁 상태 : 2개 이상의 프로세스가 동시에 읽거나 쓰는 상황
  • 임계 영역
    • 둘 이상의 프로세스, 스레드가 공유 자원에 접근할 때 순서 등의 이유로 결과가 달라지는 코드 영역
    • 해결 방안 : 뮤텍스, 세마포어, 모니터 → 상호 배제, 한정 대기, 융통성 조건을 만족
    • 토대가 되는 메커니즘 : 잠금 (화장실을 쓸 때 문 잠그는 것과 비슷한 원리
    • 1) 뮤텍스
      • 프로세스나 스레드가 공유 자원을 Lock()을 통해 잠금 설정하고 사용하고, 사용한 후에는 Unlock()을 통해 잠금 해제하는 객체
      • 상태 : 잠금 또는 잠금 해제
    • 2) 세마포어
      • 일반화된 뮤텍스
      • 간단한 정수값과 두 가지 함수 (wait, signal)로 공유자원에 대한 접근 처리
      • wait : 자신의 차례가 올 때까지 기다림
      • signal : 다음 프로세스로 순서를 넘겨줌
      • 프로세스나 스레드는 동시에 세마포어 값을 수정할 수 없음
    • 3) 바이너리 세마포어
      • 0과 1의 두 가지 값만 가질 수 있는 세마포어
    • 4) 카운팅 세마포어
      • 여러 개의 값을 가질 수 있는 세마포어
      • 여러 자원에 대한 접근 제어
  • 모니터
    • 모니터큐를 통해 공유 자원에 대한 작업들을 순차적으로 처리
    • 세마포어보다 구현하기 쉬움 → 상호 배제는 자동이기 때문

3.3.8 교착 상태

교착 상태 (deadlock) : 2개 이상의 프로세스들이 서로가 가진 자원을 기다리며 중단된 상태 (서로를 원함)

  • 교착 상태의 원인
    • 상호 배제 : 한 프로세스가 자원 독점 → 다른 프로세스들은 접근 불가능
    • 점유 대기 : 특정 프로세스가 점유한 자원을 다른 프로세스가 요청하는 상태
    • 비선점 : 다른 프로세스의 자원을 강제로 가져올 수 없음
    • 환형 대기 : 프로세스 A는 프로세스 B의 자원을 요구하고, 프로세스 B는 프로세스 A의 자원을 요구하는 등 서로가 서로의 자원을 요구하는 상황
  • 교착 상태 해결방법
    1. 자원 할당 시 조건 성립이 되지 않도록 설계
    2. 교착 상태 가능성이 없을 때에만 자원 할당 → 은행원 알고리즘 사용
    3. 교착 상태가 발생하면 사이클이 있는지 찾아보고 이에 관련된 프로세스를 1개씩 지우기
    4. 매우 드물게 일어나므로 사용자가 작업을 종료 (처리하는 비용이 더 큼) → 응답없음이라고 뜨는 경우
    • 은행원 알고리즘 : 총 자원의 양과 현재 할당한 자원의 양을 기준으로 안정 또는 불안정 상태로 나누고 안정 상태로 가도록 자원을 할당하는 알고리즘

 


 

면접을 위한 CS 전공지식 노트 | 주홍철 - 교보문고

면접을 위한 CS 전공지식 노트 | 디자인 패턴, 네트워크, 운영체제, 데이터베이스, 자료 구조, 개발자 면접과 포트폴리오까지! CS 전공지식 습득과 면접 대비, 이 책 한 권이면 충분하다! 개발자 면

product.kyobobook.co.kr

이 포스팅은 면접을 위한 CS 전공지식 노트를 기반으로 작성되었습니다.

 

728x90
반응형