티스토리 뷰

  • 프로세스 개요
    • 프로세스
      • 프로세스(process): 실행 중인 프로그램
      • 프로세스가 생성되면 프로세스 아이디가 생성됨
      • 프로그램: 동작을 하지 않는 정적, 수동적 개체
      • 프로세스: 동작을 하는 능동적 개체
    • 운영체제로부터 자원을 할당받아 동작
      • 자원: CPU, 메모리, 입출력장치, 파일 등
      • 동작: CPU가 프로세스의 명령을 실행
    • 사용자 및 시스템 프로세스 존재
  • 프로세스와 운영체제
    • 프로세스를 생성 및 삭제
    • 프로세스 실행(CPU할당)을 위한 스케줄 결정
    • 프로세스의 상태를 관리하며 상태 전이를 처리
  • 프로세스의 상태
    • 5-상태 모델
      • 생성: 처음 작업이 시스템에 주어진 상태
      • 준비: 실행 준비가 되어 CPU 할당을 기다리는 상태
      • 실행: 프로세스가 처리되는 상태
      • 대기: 프로세스가 특정 자원을 할당받을 때까지 또는 I/O 작업이 끝날 때까지 작업이 보류되는 상태
      • 종료: 모든 처리가 완료되어 사용자에게 반환되는 상태
      • 생성 -> 준비: 작업요청이 들어와서 마지막으로 CPU만 할당하면 되는상태
      • 준비 -> 실행: 해당하는 프로세스에 CPU를 할당하는 과정(디스패치)
      • 실행 -> 준비: CPU를 내어놓음, 할당시간 만료, 강제적으로 CPU를 빼앗김
      • 실행 -> 대기: 이벤트 대기
      • 대기 -> 준비: 재개조건 만족
      • 실행 -> 종료: 모든 작업이 끝났을 때
  • 프로세스 제어 블록(PCB)
    • 프로세스 제어블록(Process Control Block, PCB)
      • 프로세스의 관리를 위한 목적
      • 프로세스의 정보를 보관(프로세스 상태, 프로세스 번호(PID), 프로그램 카운터(PC): 현재까지 처리된 명령어를 기억해서 다음에 무슨 명령어를 처리해야하는지 알려줌, 레지스터들(대기나 준비상태일때 CPU에 저장되어 있던 레지스터값들이 사라지므로 다시 CPU를 배정받았을 때 기억해두어야 다음에 알 수 있음), 메모리 관리 정보, 프로세스 우선순위, 회계정보
      • 각 프로세스마다 존재
      • 프로세스가 진행함에 따라 내용 변경
  • 프로세스의 생성과 종료
    • 프로세스 생성 작업
      • 프로세스의 이름(번호, PID) 결정
      • 준비 큐에 삽입
      • 초기 우선순위 부여
      • 프로세스 제어 블록(PCB) 생성 등
    • 프로세스 생성 방법: 시스템 호출
    • 프로세스 생성 시스템 호출
      • 하나의 프로세스가 프로세스 생성 시스템 호출을 통해 새로운 프로세스를 생성
      • 예: fork()
      • 호출하는 프로세스: 부모 프로세스
      • 생성되는 프로세스: 자식 프로세스
    • 시스템 프로세스와 사용자 프로세스 모두 부모 프로세스 가능
    • 생성되는 프로세스의 자원
      • 운영체제로부터 직접 얻는 경우
      • 부모 프로세스 자원의 일부를 얻는 경우
    • 자식 프로세스의 자원은 부모 프로세스의 자원으로 제한
      •  과도한 자식 프로세스 생성에 따른 시스템 과부하 방지
    • 프로세스 종료
      • 프로세스의 마지막 명령이 실행을 마치는 경우
      • 프로세스 종료 시스템 호출(예: exit())을 통하는 경우
      • 프로세스 종료 후 부모 프로세스에게 실행결과를 되돌려 줌
    • 프로세스 종료 시스템 호출
      • 부모에 의해서만 호출
      • 자식 프로세스가 할당된 자원의 사용을 초과할 대 혹은 더이상 필요치 않을 때
    • 프로세스 간의 관계
      • 독립적 프로세스
        • 의미: 다른 프로세스의 영향을 받지도않고 주지도 않음
        • 프로세스 상태: 다른 프로세스와 공유하지 않음
        • 실행: 결정적, 재생 가능(다시실행해서 같은 결과를 볼 수 있음)
          • 다른 프로세스와 부관하게 중단 및 재시작 가능
        • 데이터: 다른 프로세스와 공유하지 않음
      • 유기적 프로세스
        • 의미: 다른 프로세스와 영향을 주고받음
        • 프로세스 상태: 다른 프로세스와 공유함
        • 실행: 비결정적, 재생 불가능(다시실행해서 같은 결과를 볼 수 없음)
        • 데이터: 다른 프로세스와 공유함
    • 프로세스와 쓰레드
      • 전통적인 프로세스
        • 처리의 기본 단위
        • 자원 소유의 단위(하나의 주소공간) 및 디스패칭의 단위(하나의 제어흐름)
        • 단일 프로세스 내에서 동시처리 불가능 -> 쓰레드 등장
      • 쓰레드(Thread)
        • 프로세스 내에서의 다중처리를 위해 제안된 개념
        • 하나의 프로세스 내에는 하나 이상의 쓰레드가 존재
        • 하나의 쓰레드 내에서는 하나의 실행점만 존재(디스패칭의 단위)
        • 실행에 필요한 최소한의 정보만을 가지며 자신이 속해 있는 프로세스의 실행환경을 공유
      • 다중 쓰레드의 장점
        • 멀티 CPU 혹은 멀티코어 시스템에서는 병렬처리 가능
        • 처리 속도 별로 쓰레드가 나눠진 경우 효율적인 처리 가능
        • 계산용 쓰레드, 입력용 쓰레드, 백업용 쓰레드
    • 스케줄링
      • 스케줄링 단계
        • 시스템에 들어오는 작업들
          • 작업3, 작업2, 작업1
        • 상위단계 스케줄링
          • 시스템에 들어오는 작업들을 선택하여 프로세스를 생성한 후 프로세스 준비큐에 전달
          • 선택 기준: 시스템의 자원을 효율적으로 이용할 수 있도록 하는 것
          • 입출력(I/O) 중심 작업과 연산 중심 작업을 균형있게 선택
        • 실행 중인 작업들
          • 준비큐
            • 프로세스c, 프로세스b, 프로세스a
        • 하위단계 스케줄링
          • 사용가능한 CPU를 준비상태의 어느 프로세스에게 배당할지를 결정
          • CPU를 배당받는 프로세스는 결국 실행상태가 되어 프로세스가 처리됨 
          • 수행주체: 디스패처(dispatcher)
        • 중간단계 스케줄링
          • 프로세스를 일시적으로 메모리에서 제거하여 중지시키거나 다시 활성화시킴
          • 시스템에 대한 단기적인 부하를 조절
        • 스케줄링 기본 목표
          • 공정성: 모든 프로세스가 적정 수준에서 CPU 작업을 할 수 있게 함
          • 균형: 시스템의 자원들이 충분히 활용될 수 있게 함
          • 일괄처리 운영체제
            • 처리량의 극대화
            • 반환시간의 최소화
            • CPU활용의 극대화
          • 대화형 운영체제
            • 빠른 응답시간
            • 과다 대기시간 방지
          • 실시간 운영체제
            • 처리 기한을 맞춤
        • 스케줄링 정책
          • 선점(Preemptive) 스케줄링 정책
            • 진행중인 프로세스에 인터럽트를 걸고 다른 프로세스에 CPU를 할당하는 스케줄링 전략
            • 높은 우선순위의 프로세스를 긴급하게 처리하는 경우에 유용
            • 대화식 시분할 시스템에서 빠른 응답시간을 유지하는데 유용
            • 대화식 시분할 시스템에서 빠른 응답시간을 유지하는데 유용
            • 문맥 교환에 따른 오버헤드 발생
              • 문맥: CPU의 모든 레지스터와 기타 운영체제에 다라 요구되는 프로세스의 상태
              • 문맥 교환: CPU의 현재 실행하고 있는 프로세스의 문맥을 PCB에 저장하고 다음 프로세스의 PCB로부터 문맥을 복원하는 작업
          • 비선점(Nonpreemptive) 스케줄링 정책
            • 프로세스가 CPU를 할당받아 실행이 시작되면 작업자체가 I/O인터럽트를 걸거나 작업을 종료할 때까지 실행상태에 있게 됨
            • 모든 프로세스가 공정하게 순서에 따라 실행됨 -> 응답시간 예측 가능
            • 짧은 프로세스가 긴 프로세스를 기다리게 될 수 있음 

'운영체제' 카테고리의 다른 글

[운영체제] 교착상태  (0) 2021.04.07
[운영체제] 병행프로세스 (2)  (0) 2021.04.02
[운영체제] 병행프로세스  (0) 2021.03.30
[운영체제] 스케줄링 알고리즘  (0) 2021.03.24
[운영체제] 운영체제의 개요  (0) 2021.03.11
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
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 31
글 보관함