3 프로세스와 스레드.

Slides:



Advertisements
Similar presentations
컴퓨터와 인터넷.
Advertisements

제14장 동적 메모리.
MS-Access의 개요 1강 MOS Access 2003 CORE 학습내용 액세스 응용 프로그램은 유용한 데이터를
인공지능실험실 석사 2학기 이희재 TCP/IP Socket Programming… 제 11장 프로세스간 통신 인공지능실험실 석사 2학기 이희재
1. Windows Server 2003의 역사 개인용 Windows의 발전 과정
연결리스트(linked list).
컴퓨터 프로그래밍 기초 [Final] 기말고사
운영체제 4장 요약정리(CPU 스케줄링) 2A 박훈.
Windows Server 장. 사고를 대비한 데이터 백업.
4장. 웹로직 서버상에서의 JDBC와 JTA의 운용
Linux서버를 이용한 채팅프로그램 지도 교수님 : 이형원 교수님 이 름 : 이 은 영 학 번 :
07. 디바이스 드라이버의 초기화와 종료 김진홍
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
DK-128 ADC 실습 아이티즌 기술연구소
메시지 큐[5] – test1.c 메시지 제어: msgctl(2) #include <sys/msg.h>
10 장 데이터 링크 제어(Data Link Control)
Sungkyunkwan University OS Project Dongkun Shin
자료구조: CHAP 4 리스트 (3) 순천향대학교 컴퓨터공학과 하 상 호.
ATmega128 FND 실습 휴먼네트웍스 기술연구소
DK-128 FND 실습 아이티즌 기술연구소 김태성 연구원
03. 병행 프로세스 (Parallel Process)
10장. 예외처리.
2장 프로세스 과목: 운영체제 학번: 이름:오승현.
2주차 운영체제-프로세스 2-B 장정훈.
Operating system #2 Process
Operating Systems Chapter 03 프로세스 개념.
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
어서와 C언어는 처음이지 제14장.
인터넷응용프로그래밍 JavaScript(Intro).
27장. 모듈화 프로그래밍.
메모리 관리 & 동적 할당.
2장. 데이터베이스 관리 시스템 데이터베이스 관리 시스템의 등장 배경 데이터베이스 관리 시스템의 정의
뇌를 자극하는 Windows Server 2012 R2
3장 프로세스와 스레드 프로세스의 상태와 변환 과정을 이해 한다 프로세스의 생성과 종료 등 프로세스에 대한 작업을 이해한다.
HTTP 프로토콜의 요청과 응답 동작을 이해한다. 서블릿 및 JSP 를 알아보고 역할을 이해한다.
DK-128 FND 실습 아이티즌 기술연구소
2.1 개요 ★TIP 프로세스란? 부팅 실행중인 프로그램, 비동기적 행위 등
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
USN(Ubiquitous Sensor Network)
2. 프로세스 관리 프로세스 중단과 재시작 중단과 재시작을 추가한 프로세스 상태 변화
DK-128 실습 내부 EEPROM 제어 아이티즌 기술연구소 김태성 연구원
School of Electronics and Information. Kyung Hee University.
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
ARM Development Suite v1.2
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
10 장 데이터 링크 제어(Data Link Control)
10 장 데이터 링크 제어(Data Link Control)
( Windows Service Application Debugging )
Linux/UNIX Programming
AT MEGA 128 기초와 응용 I 기본적인 구조.
Homework #12 (1/2) 프로그램을 작성하고, 프로그램과 실행 결과를 프린트하여 제출한다.
.Net Web Application 2007 컴퓨터공학실험(Ⅰ)
3. 모듈 (5장. 모듈).
01. 분산 파일 시스템의 개요 네트워크에 분산된 파일을 사용자가 쉽게 접근하고 관리할 수 있게 해준다.
세션에 대해 알아보고 HttpSession 에 대해 이해한다 세션 관리에 사용되는 요소들을 살펴본다
멀티미디어시스템 제 5 장. 멀티미디어 데이터베이스 개념 IT응용시스템공학과 김 형 진 교수.
학습내용 프로토콜 계층화 OSI 모델의 용어 및 기능 개체 서비스 접근점 (N) 프로토콜과 (N) 서비스 서비스 프리미티브
System Security Operating System.
9 브라우저 객체 모델.
과제 4: Thread (5월 9일까지) 4장 연습문제 풀이
제 4 장 Record.
1장 C 언어의 개요 C 언어의 역사와 기원 C 언어의 특징 프로그램 과정 C 프로그램 구조 C 프로그램 예제.
1. 지역변수와 전역변수 2. auto, register 3. static,extern 4. 도움말 사용법
 6장. SQL 쿼리.
버스와 메모리 전송 버스 시스템 레지스터와 레지스터들 사이의 정보 전송을 위한 경로
교착 상태 해결 : 교착 상태 탐지 교착 상태 탐지(Deadlock Detection)
7 생성자 함수.
6 객체.
2. 프로세스 B 안우진 - 운영체제 -.
Presentation transcript:

3 프로세스와 스레드

학습목표 내용 프로세스와 스레드의 개념을 이해한다. 프로세스의 상태 변화 과정을 이해한다. 프로세스의 생성과 종료 등 프로세스와 관련된 작업을 이해한다. 프로세스와 스레드의 차이를 알고 스레드의 장점을 이해한다. 사용자 수준 및 커널 수준 스레드의 장단점을 이해한다. 내용 프로세스 개요 프로세스 관리 스레드

1. 프로세스 개요 프로세스(Process) 개념 1960년대 멀틱스 시스템(Multics System) 설계자가 처음 사용. 이후 작업(Task)이란 용어와 함께 사용되며, 다양한 정의를 가짐. 가장 일반적인 정의는 “실행 중인 프로그램” - 디스크에 저장되어 있던 실행 가능한 프로그램이 메모리에 적재되어 운영체제의 제어를 받는 상태. - 해당 프로세스가 사용하고 있는 메모리 영역(자신의 주소 공간)이 존재함을 의미. (각 프로세스는 프로그램 코드, 프로그램 변수가 가지고 있는 자료의 값, 하드웨어 레지스터나 프로그 램 스택에 저장된 값등을 포함한다.) - 프로세서 할당(점유) 시간과 메모리, 파일, 입출력장치 등의 자원이 필요하며, 자원은 프로세스 생성 및 실행 시 할당됨. - 현재의 활동 상태를 나타내는 프로그램 카운터와 프로세서의 현재 활동(레지스터 내용) 포함. 프로그램과 달리 프로세스는 메모리에 주소 공간을 갖는 능동적인 개체. * 프로그램은 디스크에 저장된 파일 내용으로 정적 단위다. [그림3-1] 메모리에 존재하는 프로세스 주소 공간 구조 실행 스택(Stack) : 호출된 프로시저(함수)의 복귀 주소와 지역 변수 등의 일시적인 데이터를 저장하는 영역. 실행 힙(Heap) : 텍스트(코드) 영역과는 별도로 유지되는 자유 영역. 데이터(정적 변수) : 전역 또는 정적 변수(static) 저장. 텍스트(코드) : 프로세서가 실행하는 코드 저장.

1. 프로세스 개요 재진입 프로그램(재진입 코드) 메모리 내에 동일한 사본을 여러 사용자가 공유할 수 있도록 작성된 프로그램 또는 루틴. - 실행 중 사용할 데이터를 보관하는 실행 스택과 공통적인 데이터를 보관하는 데이터 영역을 가짐. - 프로세스 두 개가 동일한 프로그램을 사용하여도 텍스트(코드) 영역은 같으나 별도의 스택에 서로 다른 데이터를 가지므로 별개의 프로세스로 인식됨. - 데이터베이스, 문서 편집기 등 프로세스는 사용자 관점에서 세그먼트(코드, 데이터, 스택 등)의 가상 주소 공간을 갖는 상태를 의미하고 시스템 관점에서는 실행중인 프로그램을 의미. [그림3-2] 시스템 관점에 본 프로세스 처리 상태에 있는 데이터 구조로도 표현 가능(그림 3-2) - 저장된 프로그램은 프로세서를 할당받아야 실행상태의 프로세 스가 됨. - 스케줄러(디스패칭)에 의해 프로세서 할당. - 파일에 관련된 자원에 대한 참조.(장치 관리, 메모리 관리) - 프로세스 지원과 협력에 관한 정보(교착상태, 보호, 동기화) 교환. - 프로세스 관련 연산은 생성, 종료, 보류, 자원 할당, 해제 등

1. 프로세스 개요 프로세스 종류 실행 유형에 따라 크게 3가지로 구분. 운영체제 프로세스 사용자 프로세스 병행 프로세스 - 커널 프로세스 또는 시스템 프로세스라 부름. - 프로세스 실행 순서 제어하거나 사용하고 있는 프로세스가 다른 사용자나 운영체제 영역을 침범하지 못하게 감시하는 기능 담당. - 사용자 프로세스를 생성하거나 입출력 프로세스를 생성하는 등 시스템 운영에 필요한 작업 수행. 사용자 프로세스 : 사용자 코드 수행. 병행 프로세스 : 프로세스 여러 개가 동시에 실행 되는 것을 의미, 독립 프로세스와 협동 프로세스로 구분. 1. 독립 프로세스 - 프로세스 여러 개가 병행하여 수행 시 주어진 초기값에 따라 항상 같은 결과를 보여줌. - 서로 독립적으로 실행되어 다른 프로세스에 영향을 주지 않거나 다른 프로세스에 영향을 받지 않고, 데이터를 공유하지 않음. 2. 협동 프로세스 - 다른 프로세스에 영향을 주거나 다른 프로세스에 의해 영향을 받음. - 컴퓨터 시스템의 제한된 자원을 공유하는 프로세스들이 통제되어 상호 작용해야 하는 경우 발생. - 서로 협동해야 하는 경우, 서로 통신하기 위한 수단과 동기화 기능이 필요.

1. 프로세스 개요 프로세스 상태 실행과 비실행 프로세스로 구분. (그림3-3) 프로세스는 실행되면서 상태가 변하므로 운영체제는 프로세스 제어에 필요한 프로세스 상태를 점검해야 함. - 운영체제가 프로세스를 새로 생성하면 비실행 상태로 초기화되어 실행을 기다림. - 실행 중인 프로세스가 종료 or 인터럽트 발생 : 비실행 프로세스 중 선택된 프로세스가 실행 상 태로 변하고(디스패치) 인터럽트 된 프로세스는 비실행 상태로 변경. 실행 상태 프로세스 (그림3-4) - 실행 : 명령어가 실행되는 상태, 즉 프로세스가 프로세서를 점유한 상태 - 대기 또는 보류 : 프로세서가 이벤트(입출력 종료와 같은 외부 신호)가 일어나길 기다리는 상태 - 준비 : 프로세스가 프로세서를 할당 받기 위해 기다리는 상태 대부분의 프로세스는 준비나 대기(보류) 상태이며, 어느 한 순간에 한 프로세스만 실행 상태가 됨. [그림3-4] 프로세스 상태 [그림3-3] 프로세스 상태 구분

1. 프로세스 개요 프로세스 상태 스케줄링 프로세스가 생성되어 실행될 때 필요한 시스템의 여러 자원을 해당 프로세스에 할당하는 작업을 의미 - 시간과 순서를 배정한다는 의미. 작업 스케줄링 (Job Scheduling) - 어떤 프로세스가 시스템의 자원을 차지할 수 있는지를 결정하여 준비상태 큐로 보내는 작업을 의미. - 작업 스케줄러(Job Scheduler)에 의해 수행. 프로세서 스케줄링 (Processor Scheduling) - 프로세스가 실행되기 위해 CPU를 할당받는 시기와 특정 프로세스를 지정하는 작업. - 프로세서 스케줄러(Processor Scheduler)에 의해 프로세서 스케줄링 및 문맥 교환이 수행 됨. 프로세스 스케줄러 (Process Scheduler) - 하나의 프로세스를 준비(Ready)상태에서 실행(Run)상태로 전이시킴. 7

1. 프로세스 개요 프로세스 상태 변화 작업 스케줄러 시스템의 모든 프로세스는 종료되어 시스템을 떠날 때까지 준비,실행, 대기(보류) 상태로 변화되면서 실행되는 과정을 반복. 운영체제는 프로세서 스케줄러를 이용해 프로세스 상태 변화를 관리. 작업 스케줄러 스풀러가 디스크에 저장한 작업들 중 실행할 작업을 선정하여 준비 리스트에 삽입. 이를 통해 작업 스케줄러는 다중 프로그래밍의 정도를 결정하는 핵심적인 역할을 수행. 선정한 작업에 대한 프로세스의 생성에서 종료까지의 과정을 수행하기 위해 아래 그림과 같은 상태 변화를 일으킴. [그림3-5] 프로세스 상태 변화 프로세스 상태 변화(그림 3-5) - 실행 프로세스가 자발적으로 프로세서 반환 전 할당된 시간이 경과하면 준비상태로 변경. - 실행 프로세스가 실행하다 입출력 명령이 발생 시 대기 (보류) 상태로 변경. - 대기 프로세스는 보류 이유가 제거되면 준비 상태로 변경. - 준비 프로세스는 디스패처(Dispatcher)가 프로세서를 할당하면 다시 실행상태로 변경. * 디스패처 : 선택한 프로세스에 프로세서 제어를 넘기는 모듈.

1. 프로세스 개요 프로세스 상태 변화 준비 (Ready) 실행 (Running) 대기(Block) Dispatch Timeout Block (I/O요구) Wakeup (I/O종료) P1 Ready Queue P2 P3 P4 … 9

1. 프로세스 개요 준비 → 실행 디스패치(Dispatch) 시간 할당 - 준비 리스트 맨 앞에 있던 프로세스가 프로세서를 선택(배당되어 실행)하는 것. - 디스패처 : 선택한 프로세스에 프로세서 제어를 넘기는 모듈. dispatch(프로세스명) : 준비 → 실행 시간 할당 - 실행 프로세스가 프로세서를 일정 시간만 사용할 수 있도록 시간을 제한하는 것. - 특정 프로세스가 프로세서를 계속 독점하는 것을 방지함. [그림3-6] 프로세스와 디스패처

1. 프로세스 개요 실행 → 준비 실행 → 대기(보류) 대기(보류) → 준비 프로세스가 프로세서를 점유한 상태를 “프로세스가 실행 상태에 있다”라고 함. 운영체제는 프로세서의 독점을 방지하기 위해 인터럽트 클록(Interrupt Clock)을 둠. - 특정 프로세스가 일정 시간이 지나도(타임아웃) 프로세서를 반환하지 않으면 클록(Clock)이 인터럽트를 발생시켜 운영체제가 프로세서 제어권을 갖게 함. 운영체제가 제어권을 가지면 실행 중인 프로세스는 준비 상태로 변화, 준비 리스트의 첫 프 로세스가 실행 상태로 변경. timeout(프로세스명) : 실행 → 준비 실행 → 대기(보류) 실행 프로세스가 지정 시간 전에 입출력 연산 등이 필요하거나 새로운 자원 요청 등의 문제 발생 시 스스로 프로세서를 양도하고 대기 상태로 변경. block(프로세스명) : 실행 → 대기(보류) 대기(보류) → 준비 깨움(Wake up) : 프로세스의 마지막 상태 변화로 입출력 작업이 끝났을 때 발생. wakeup(프로세스명) : 대기(보류) → 준비 ※ 프로세스 상태 변화 중 프로세스 스스로 하는 것은 보류뿐, 나머지는 외부 조건에 의해 발생.

1. 프로세스 개요 프로세스 제어 블록 (PCB, Process Control Block) 프로세스는 운영체제 내에서 프로세스 제어 블록이라 표현하며, 작업 제어 블록이라고도 함. - 프로세스를 관리하기 위해 유지되는 데이터 블록 또는 레코드의 데이터 구조. - 프로세스 식별자, 프로세스 상태, 프로그램 카운터 등의 정보로 구성. - 프로세스 생성 시 만들어지고 메인 메모리에 유지, 운영체제에서 한 프로세스의 존재를 정의. - 프로세스 제어 블록의 정보는 인터럽트 처리, 자원 할당, 스케줄링을 수행하는 운영체제의 모든 모듈 이 읽고 수정 가능. 프로세스 제어 블록 (그림 3-7) - 프로세스 식별자 : 각 프로세스에 대한 고유 식별자 지정. - 프로세스 상태 : 생성, 준비, 실행, 대기, 중단 등의 상태 표시. - 프로그램 카운터 : 프로그램 실행을 위한 다음 명령의 주소 표시. - 레지스터 저장 영역 : 누산기, 인덱스 레지스터, 범용 레지스터, 조건 코드 등에 관한 정보로 컴퓨터 구조에 따라 수나 형태가 달라짐. 인터럽트 발생 시 프로그램 카운터와 함께 저장되어 재수행 시 복귀. - 프로세서 스케줄링 정보 : 프로세스의 우선순위, 스케줄링 큐에 대한 포인터, 그 외 다른 스케줄 매개변수를 가짐. - 계정 정보 : 프로세서 사용시간, 실제 사용시간, 사용상한시간, 계정 번호, 작업 또는 프로세스 번호 등. - 입출력 상태 정보 : 특별한 입출력 요구 프로세스에 할당된 입출력장치, 개방된(Opened) 파일의 목록 등. - 메모리 관리 정보 : 메모리 관리에 필요,메모리 영역을 정의하는 하한 및 상한 레지스터(경계 레지스터) 또는 페이지 테이블 정보. [그림3-7] 프로세스 제어 블록(PCB)

1. 프로세스 개요 프로세스 교환 프로세스의 교환은 인터럽트와 트랩, 시스템 호출로 나타냄. 실행 중인 프로세스가 인터럽트 되면 운영체제는 다른 프로세스를 실행 상태로 변경하고 제어를 넘겨줄 때, 프로세서의 레지스터 내용은 나중에 인터럽트 완료 후 재수행을 위해 저 장해야 함. 프로세스는 프로그램 카운터, 레지스터 같은 현재 사용되는 자원에 대한 정보를 가지며, 실 행되는 과정에서 여러 프로세스가 파생될 수 있는 능동적인 개체. - 프로그램은 프로세스 여러 개로 생성될 수 있는 디스크에 저장된 파일 내용으로 정적 단위. 즉, 프로세스는 메모리 영역, 프로세스 제어 블록 등의 자원을 할당 받은 상태의 프로그램. [그림3-8] 프로세스 간 교환(프로세서 사용을 전환하는 P1, P2 간의 교환)

2. 프로세스 관리 프로세스 구조 실행 중에 프로세스 생성 시스템을 호출하여 새로운 프로세스를 생성. 이때 프로세스 생성 순서가 저장, 부모/자식 관계를 유지하며 계층적으로 생성됨. - 부모 프로세스(Parent Process) : 생성하는 프로세스. - 자식 프로세스(Child Process) or 서브 프로세스(Sub Process) : 생성되는 프로세스. 유닉스 시스템의 일반적인 프로세스 계층 구조 (그림 3-9) - 처음 부팅 시 식별자(PID, Process ID)가 0인 첫 번째 프로세스 Swapper 생성. - 이어서 Init(PID=1), Pagedeamon(PID=2) 생성. - Swapper(PID=0), Pagedeamon(PID=2)를 운영체제(커널)프로세스라 하며 운영체제 모드에서만 실행. - 모든 사용자 프로세스는 fork() 명령을 통해 계층적으로 Init의 자식 프로세스로 생성됨. [그림3-9] 프로세스 계층 구조 예(유닉스 시스템)

2. 프로세스 관리 운영체제는 계층 프로세스를 관리하기 위해 다음과 같은 작업을 한다. 프로세스 생성 프로세스 종료 프로세스 제거 프로세스 중단(서스펜드)과 재시작 프로세스 우선순위 변경 문맥교환

2. 프로세스 관리 프로세스 생성 프로세스는 운영체제 또는 다른 사용자의 응용 프로그램 요청에 의해 생성. 인쇄버튼 클릭 시, 프린터를 구동시키는 프로세스를 생성하여 출력 작업을 수행. 운영체제가 새로운 프로세스를 생성하고 추가하려면 프로세스 관리를 위한 프로세스 제어 블록을 만든 후 프로세스에 주소 공간을 할당해야 함. - 일괄 처리 환경에서는 실행을 위해 작업이 준비 큐에 도착할 때 생성. - 대화형 환경에서는 새로운 사용자가 로그온(Log-on)할 때 생성. 프로세스 생성을 위해 다음과 같은 작업이 필요함. - 프로세스 식별자 결정. - 시스템에 알려진 프로세스 리스트에 식별자 삽입. - 프로세스에 초기 우선 순위 부여. - 프로세스 제어 블록 생성. - 프로세스에 초기 자원 할당. 프로세스 생성 과정. 1 단계 : 새로운 프로세스에 프로세스 식별자 할당. 2 단계 : 프로세스의 모든 구성 요소를 포함할 수 있는 주소 공간과 프로세스 제어 블록 공간 할당. 3 단계 : 프로세스 제어 블록 초기화. - 프로세스의 상태 정보/프로그램 카운터/스택 포인터 등의 초기화, 자원 요청, 프로세스 제어 정보 (우선 순위) 등이 포함됨. 4 단계 : 링크(해당 큐에 삽입). 16

2. 프로세스 관리 프로세스가 작업을 수행하려면 자원(메모리,파일,입출력장치,CPU점유시간) 필요. 자식 프로세스 생성 시 필요한 자원을 운영체제로부터 직접 얻거나 부모 프로세스의 자원 일 부를 사용할 수 있음. 부모 프로세스는 자식 프로세스에 자원을 나눠주거나 일부 자원의 공유 가능. - 자원의 일부만 사용하도록 제한하면 어떤 프로세스가 자식 프로세스를 너무 많이 생성하여 시스템에 부 담을 주는 것을 방지 가능함 - 프로세스 생성 시 획득하는 다양한 물리적, 논리적 자원 외에도 약간의 초기화 데이터가 부모 프로세스 에서 자식 프로세스로 전달되는 경우도 있음. 새로운 프로세스 생성 시 실행과 관련해 다음 두 가지 경우가 가능함. 부모 프로세스와 자식 프로세스가 동시에 실행됨. Ex) fork() 부모 프로세스는 자식 프로세스들이 모두 종료될 때까지 기다림. Ex) wait() 새로운 프로세스의 주소 공간은 다음 두 가지 경우가 가능함. 자식 프로세스가 부모 프로세스의 주소 공간을 복사. 자식 프로세스가 별도의 프로그램을 적재. Ex) exec() 유닉스에서의 수행과정. - 유닉스는 각 프로세스마다 정수로 된 고유한 프로세스 식별자를 가짐. - 새로운 프로세스는 fork() 명령에 의해 생성, 주소 공간은 부모 프로세스의 주소 공간을 복사함. - 부모 프로세스와 자식 프로세스의 정보 교환이 쉬움. - 복귀코드(리턴값) : 자식프로세스는 0, 부모프로세스는 자식프로세스의 식별자.

2. 프로세스 관리 fork 시스템 호출 후의 프로세스 구조 부모 프로세스 ID는 12791이고, fork 호출 후 부모 프로세스 ID는 12791을 유지하고 자식 프로세스의 ID는 12793. fork 호출 후의 부모 프로세스 반환값 rtn은 12793이고, 자식 프로세스 반환값 rtn은 0. main() { …… rtn = fork() } 텍스트 스택 사용자 영역 fork 시스템 호출 전 pid : 12791 fork 시스템 호출 후 pid : 12793 부모 프로세스 자식 프로세스 12793 18

2. 프로세스 관리 프로세스 종료 프로세스가 마지막 명령의 실행 후 종료되고 운영체제에 프로세스 삭제를 요청. 일괄 처리 환경 : 작업 종료를 의미하는 신호로 인터럽트를 발생 또는 시스템 호출로 중지 명령 전달하여 프로세스를 완료. 대화형 환경 : 사용자가 로그오프(Log-off)하거나 터미널을 닫을 때 또는 오류에 의해 프로세스 종료. abort 시스템 호출을 이용한 프로세스 종료. - 종료되는 프로세스를 생성한 부모 프로세스만 호출 가능. : 부모 프로세스가 자식 프로세스의 생존권을 가져 다른 프로세스가 임의로 작업을 중단시킬 수 없기 때문. - 자식 프로세스 종료 시 자식 프로세서의 신원(Identity)이 부모 프로세스로 전달. 부모 프로세스는 아래의 이유로 자식 프로세스 종료 가능. 자식 프로세스가 할당된 자원을 초과하여 자원을 사용할 때. 자식 프로세스에 할당된 작업(Task)이 더 이상 없을 때.

2. 프로세스 관리 연속 종료 프로세스를 종료하는 경우와 그 예 시스템이 부모 프로세스 종료 시 자식 프로세스의 존재를 허용하지 않아 종료시키는 현상 으로 운영체제가 수행함. - 유닉스에서 exit 명령으로 프로세스 종료, 부모 프로세스는 wait 명령을 사용하여 자식 프로세스의 종료를 기다림. - wait 명령 : 종료된 자식의 프로세스 식별자를 부모 프로세스에 전달함. (어떤 자식 프로세스가 종료되었는지 알 수 있음) 프로세스를 종료하는 경우와 그 예 정상 종료 : 프로세스가 운영체제의 서비스를 호출한 경우. 시간 초과 : 프로세스가 명시된 전체 시간을 초과하여 실행되거나 명시된 시간을 초과하면서 어떤 이벤트 발생을 기다리는 경우. 실패 : 파일 검색 실패, 명시된 횟수를 초과하여 입출력이 실패한 경우. 산술 오류, 보호 오류, 데이터 오류 등. 메모리 부족, 접근 위반 등

2. 프로세스 관리 Wait() - 복귀값은 자식 프로세스의 프로세스 식별번호. - 만일 -1을 리턴하면 살아있는 자식 프로세스가 하나도 없다는 의미. : errno는 오류코드 ECHILD - 부모 프로세스가 모든 자식 프로세스가 종료했음 을 인식할 때, 루프를 끝내고 수행을 계속함. - 하나의 인수, status를 가지며 정수를 가리키는 포인터. * 포인터가 NULL이면 인수는 무시. * 유효한 포인터가 인수로 전달되면, 이 포인터가 가리키는 정수는 wait가 복귀될 때 유용한 상태 정보를 나타냄. : 자식 프로세스가 exit로 끝날 때 받는 종료 상태 - 자식 프로세스의 exit를 통해 부모 프로세스에게 전달되는 값은 정수 status의 상위 8비트에 저장. - 매크로 WIFEXITED는 하위 8비트는 반드시 0이 되는지 검사. - 매크로 WEXITSTATUS는 status의 상위비트에 저장된 값을 리턴. int status; if((pid = fork()) < 0) { fatal(“fork failed”); } if(pid == 0) // 자식 프로세스 /*이제 수행을 4초 동안 중단시키기 위해 라이브러리 루틴 sleep을 호출한다.*/ sleep(4); exit(5); // 0이 아닌 값을 갖고 종료. // 부모는 자식을 기다린다. if((pid = wait(&status)) == -1) perror(“wait failed”); exit(2); if(WIFEXITED(status)) exit_status = WEXITSTATUS(status); printf(“Exit status from %d was %d\n”, pid, exit_status); 21

2. 프로세스 관리 프로세스 제거 프로세스를 파괴하는 것. 제거 시 프로세스에 속한 자원을 시스템에 돌려주고 해당 프로세스는 시스템 리스트나 테이블에서 사라지며, 프로세스 제어 블록이 회수된다. 프로그램은 디스크에 저장됨. 부모 프로세스 제거 시 해당 자식 프로세스도 자동 제거. 22

2. 프로세스 관리 프로세스 중단과 재시작 프로세스 중단(일시 정지) 운영체제는 다음 두 가지 방법으로 프로세스를 실행 가능. 프로세서의 동작 시간과 입출력 동작 시간의 차이로 시스템의 활동 시간이 유휴 상태로 되는 것을 해결 가능. 운영체제는 다음 두 가지 방법으로 프로세스를 실행 가능. 새로운 프로세스를 생성하여 실행. 이미 실행 중인 프로세스를 중단시켰다가 다시 실행. - 시스템 전체의 부하를 증가시키지 않으면서 프로세스에 서비스 제공 가능. - 특정 이벤트 발생을 기다리며 대기 상태가 되므로 해당 이벤트 발생 시 즉시 실행 상태로 변화 가능. 프로세스 재시작 중단 원인이 제거되어 프로세스가 다시 실행되는 것. 중단되었던 프로세스는 기다리는 이벤트(입출력 완료 인터럽트)가 발생하면 중단되었던 지점부터 다시 시작.

2. 프로세스 관리 프로세스 중단과 재시작은 다음과 같은 경우에 발생함. 다중 프로그래밍 환경 자원 해제 시스템에 장애가 발생하면 실행 중인 프로세스는 잠시 중단했다가, 시스템이 기능을 회복했을 때 다시 재시작할 수 있다. 프로세스의 어느 부분이 의심스러울 때 사용자는 실행 중인 프로세스를 중단하여 확인한 후 재시작하거나 정지할 수 있다. 처리할 일이 너무 많아 시스템 부담이 크면 프로세스 몇 개를 중단했다가 시스템이 다시 정상 상태로 돌아왔을 때 재시작할 수 있다. 다중 프로그래밍 환경 다중 프로그래밍에서 중단은 자원 부족(대기) 상태를 의미하기도 함. - 다중 프로그래밍 환경에서는 자원의 이용률과 시스템 효율 향상을 위해 자원을 동적으로 할당. - 중단 : 할당된 자원을 기다리는 상태. - 대기 : 자원을 할당 받기 위해 기다리는 상태. - 하드웨어가 고장나거나 다른 프로세스가 해당 자원을 반환할 수 없는 상태 발생. : 교착상태 발생 시 문제 생김. 자원 해제 보통 짧은 시간 동안 요청되는 프로세스가 많은 경우 몇 개의 프로세스를 중단. 장시간 중단되는 경우 해당 프로세스에 할당된 자원을 다시 풀어주어야 함. 어느 자원을 풀어줄 것인가를 결정하는 일은 자원의 성질에 따라 결정. - 메인 메모리 : 프로세서가 중단되는 대로 시스템으로 복귀. - 테이프 장치 : 잠시 중단되는 프로세서인 경우는 계속 장악 가능하지만 시간을 예측할 수 없거나 아주 긴 시간 동안 중단될 때는 시스템으로 복귀.