Published 2022. 11. 6. 15:35

프로세스란?

실행 중인 프로그램 → 프로그램은 디스크에 존재하는 실행을 위한 명령어와 정적 데이터 묶음인데 이것에 생명을 넣은 것이 프로세스

프로세스 상태

  • Running
  • Ready
    • 프로세스가 실행 준비
    • 메모리에 올라간 상태임
  • Blocked (= Sleep)
    • 프로세스가 특정 작업 수행
    • I/O 요청 하면 블럭되고, 다른 프로세스 실행함
  • 보류 상태(= Swap-out 상태)
    • Swapping
      • 프로세스의 일부나 전체를 주기억장치로 옮겨놓는 것
    • Swap-out
      • 종료되지 않은 프로세스를 주기억장치에서 스왑공간(디스크의 일부)으로 이동하는 것
    • Swap-in
      • Swap-out된 프로세스의 이미지를 스왑 공간에서 주기억장치로 이동하는 것

Context Swiching (문맥 교환)

  • 어떤 프로세스가 인터럽트 될 때, 프로세스 상태가 적절한 필드에 저장되고, 프로세스 상태를 블록, 대기 상태로 만든 후, 다른 프로세스를 수행시키고 수행시킨 프로세스의 상태를 적재하여 새로운 프로세스 실행하는 것
  • 다수의 프로세스를 지원하고 다중처리 할 수 있게 해주는 도구 → CPU 가상화

프로세스 생성 과정

  1. 프로그램 코드를 메모리로 로드
    • 프로그램은 실행 가능한 형식으로 디스크에 상주
    • OS에서 로딩은 느리게 부분적으로 수행, 필요한 코드 일부와 데이터 일부 로딩
  1. 프로그램 런타임 스택 할당
    • 지역변수, 함수 파라미터, 리턴 주소 등
    • main의 argc, argv를 이용하여 스택 초기화
  1. 프로그램 힙 생성
    • malloc, free등
  1. I/O 셋업
    • STDIN, STDOUT, STDERR file descriptor 할당
  1. main에서 프로그램 시작

CPU 가상화

  • 단일 CPU 컴퓨터에서 임의 시점에 마치 여러개의 프로세스가 수행되는 것처럼 보이게 하는 illution
  • 가상화 이슈
    • Performance: 시스템에 과도한 오버헤드 없어야함
    • Control: CPU에 대한 통제를 유지하면서 프로세스를 효율적으로 실행해야함

제한적 직접 실행 (Limited Direct Execution)

  • 목적: 프로그램을 빠르게 실행하기 위해 개발
  • 방법: 프로그램을 CPU에서 직접 실행
  • 문제점
    1. 제한된 연산

      ex) 프로세스가 I/O나 CPU, 메모리같은 시스템자원 추가 할당 요청하면 문제 생김

      만약 원하는 대로 할 수 있게 하면 파일에 대한 접근 권한 확인하는 파일 시스템 구현할때 프로세스는 이미 접근 권한을 가지고 있으니까 문제가 생김

      • 해결책
        • 사용자모드 / 커널모드
          • 사용자모드: 실행되는 코드의 할 수 있는 일 제한 (ex. I/O 발생시 예외)
          • 커널모드: 모든 작업 가능
        • 이를 위해 시스템콜 제공
          • 시스템콜 실행하기 위해서 trap 실행 → 커널 안으로 분기하며 특권 수준을 커널모드로 상향조정
    1. 프로세스 간 전환

      CPU에서 프로세스 실행중 → OS는 실행중 아님을 의미 → 프로세스 간 전환 불가

      • 해결책
        • 협조적 접근 방식
          • 프로세스가 yield 시스템콜 호출 → 운영체제에게 제어 넘김
          • 비정상적인 행위(divied-by-zero, 메모리 접근)를 하면 제거가 OS에 넘어감
          • 문제점: 악의적인 프로그램 or 버그로 무한루프 빠져서 yield 호출 못하면 문제 생김
        • 비협조적 접근 방식
          • 프로세스가 시스템콜 호출 거부하거나 호출하지 않아 OS에 제어 넘기지 않으면 하드웨어의 도움 없이 할 수 있는거 거의 없음
          • Timer interrupt 이용
            • 일정 시간마다 interrupt 발생


Uploaded by N2T

'OS' 카테고리의 다른 글

[OS] Memory  (0) 2022.11.06
[OS] Scheduling  (0) 2022.11.06
복사했습니다!