Notice
Recent Posts
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Archives
관리 메뉴

교대최소제곱법

[운영체제 part 1] 프로세스 본문

CS 기초/운영체제

[운영체제 part 1] 프로세스

옐라크레 2023. 9. 8. 16:51

모든 프로그램은 실행을 위해 자원을 필요로 한다

커널 영역에 적재되는 프로그램

오류메세지에 대한 깊은 이해가 가능하다

 

커널 : 핵심적인 서비스를 담당하는 부분

유저 인터페이스는 커널이 아님

이중모드 : 플래그로 구별 가능, 사용자모드 vs 커널모드

시스템 호출 : 커널모드로 전환하기 위한 방법 → 소프트웨어 인터럽트

  1. 프로세스(실행 중인 프로그램) 관리
  2. 자원 접근 및 할당 : cpu 스케쥴링, 메모리(페이징, 스와핑), 입출력장치
  3. 파일 시스템 관리

프로세스

프로세스 제어 블록 PCB : 프로세스 관련 정보를 저장하는 자료 구조 → 커널 영역에 저장

  • 프로세스 ID (PID)
  • 레지스터 값 : 자신의 실행 차례가 오면 이전에 사용한 레지스터 값을 복원해 실행을 재개하기 위해 저장
  • 프로세스 상태
  • cpu 스케쥴링 정보
  • 메모리 정보
  • 사용한 파일과 입출력장치 정보

 

문맥교환 : 프로세스 교환

  1. 중간 정보(문맥) 백업
  2. 다음 프로세스의 중간 정보 복구

 

그렇다면 사용자 영역에는 어떻게 저장될까?

영역을 나누어서 저장 됨

  1. 코드 영역 : 텍스트 + 쓰기 금지
  2. 데이터 영역 : 전역변수가 저장됨
  3. 힙 영역 : 프로그래머가 직접 할당할 수 있는 공간
  4. 스택 영역 : 데이터가 일시적으로 저장 (매개변수, 지역변수)

힙, 스택 영역은 크기가 가변적이기 때문에 메모리를 공유하는 느낌임

 

프로세스 상태 : 생성, 준비, 실행, 대기, 종류

준비 → 실행 : 디스패치

실행상태에서 시간 모두 사용 → 준비 상태

실행 도중 입출력장치 인터럽트 → 대기 상태 → 입출력 완료시 → 준비 상태

 

 

프로세스 계층 구조 : 자식 - 부모 계층

프로세스 생성 : 복제와 옷 갈아입기 Fork-exec

  1. fork를 통해 자신의 복사본으로 자식 프로세스 생성
  2. exec를 통해 자신의 메모리 공간을 새로운 프로그램으로 덮어써라

 

스레드(소프트웨어 스레드) : 실행 흐름의 단위

스레드의 구성 요소 : 실행에 필요한 최소한의 정보

스레드는 자원을 공유함!! → 프로세스와 다른 점이네 근데 리눅스 창시자는 스레드와 프로세스는 비슷하다고 말함 → 요즘 cpu는 스레드 단위로 하기 때문

 

멀티 프로세스 vs 멀티 스레드 ?

프로세스는 남남, 스레드는 같은 자원을 공유

스레드는 공유하기 때문에 협력과 통신에 유리 but 문제가 생기면 전체 문제

  • 물론 프로세스 간 통신을 통해 공유를 할 수는 있음 or 파일을 통한 통신