슬라이드 1

Similar documents
6주차.key

Microsoft PowerPoint - Lecture_Note_7.ppt [Compatibility Mode]

슬라이드 1

Microsoft PowerPoint - StallingsOS6e-Chap03.ppt [호환 모드]

Figure 5.01

untitled

강의10

<4D F736F F F696E74202D20BBE7BABB202D204F DC7C1B7CEBCBCBDBA20BDBAC4C9C1D9B8B528BAF1BCB1C1A12CBCB1C1A1292E707074>

<C1A4BAB8C3B3B8AE5FB1E2BBE75FC7CAB1E25F E687770>

Microsoft Word - ExecutionStack

Microsoft PowerPoint - o8.pptx

운영체제

ABC 11장

<4D F736F F F696E74202D FC7C1B7CEBCBCBDBA20BBFDBCBAB0FA20BDC7C7E0205BC8A3C8AF20B8F0B5E55D>

2009년 상반기 사업계획

좀비프로세스 2

Microsoft Word - FunctionCall

제9장 프로세스 제어

임베디드시스템설계강의자료 6 system call 1/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

Microsoft PowerPoint - chap6 [호환 모드]

사용자수준의스레드 : 사용자의라이브러리에의해운영, 속도는빠르나, 구현이복잡하다. 커널수준의스레드 : 운영체제커널에의해운영, 속도는느리나, 구현이단순하다. 스케줄링 (Scheduling) 1) 스케줄링의정의 프로세스가생성되어실행될때필요한시스템의여러자원을해당프로세스에게할당

제11장 프로세스와 쓰레드

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

Microsoft PowerPoint - 15-MARS


<4D F736F F F696E74202D20322DBDC7BDC3B0A320BFEEBFB5C3BCC1A6>

리눅스 프로세스 관리

7 프로시저가활동중인것 8 실행중인프로시저의제어궤적 9 CPU가할당되는실체 운영체제가관리하는최소단위작업 (2) 프로세스상태전이도 (3) 주요프로세스상태 1 준비 (Read) 상태 : 실행하기위해준비하고있는상태 2 실행 (Run) 상태 :

Deok9_Exploit Technique

PowerPoint 프레젠테이션

KEY 디바이스 드라이버

10.

chap 5: Trees

PCServerMgmt7

JVM 메모리구조

Microsoft PowerPoint APUE(Intro).ppt

Chapter #01 Subject

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

학습목표 ü 01_ 소개 ü 02_ 스케줄링수준 ü 03_ 선점형 / 비선점형스케줄링 ü 04_ 우선순위 ü 05_ 스케줄링목적 ü 06_ 스케줄링기준 ü 07_ 스케줄링알고리즘 ü 08_ 데드라인스케줄링 ü 09_ 실시간스케줄링 ü 10_ 자바스레드스케줄링 2/23

PowerPoint 프레젠테이션

제1장 Unix란 무엇인가?

Sena Technologies, Inc. HelloDevice Super 1.1.0

chap7.key

BMP 파일 처리

11장 포인터

Microsoft PowerPoint - chap06-5 [호환 모드]

Microsoft PowerPoint - o4.pptx

Microsoft PowerPoint - o5.pptx

슬라이드 1

ESP1ºÎ-04

Microsoft PowerPoint - o5.pptx

Chap06(Interprocess Communication).PDF

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

PowerPoint 프레젠테이션

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

1장. 유닉스 시스템 프로그래밍 개요

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

PowerPoint 프레젠테이션

2009년 상반기 사업계획

- 코드로읽는리눅스디바이스드라이버 강남용

vi 사용법

Microsoft PowerPoint - chap10-함수의활용.pptx

Chap04(Signals and Sessions).PDF

hlogin7

슬라이드 1

Microsoft PowerPoint - chap06-2pointer.ppt

hlogin2

제12장 파일 입출력

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3

제1장 Unix란 무엇인가?

<4D F736F F F696E74202D C465F4B6F F6E662DB8AEB4AABDBABFA1BCADC0C7BDC7BDC3B0A3C1F6BFF8>

untitled

구문 분석

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

제8장 프로세스

2. GCC Assembler와 AVR Assembler의차이 A. GCC Assembler 를사용하는경우 i. Assembly Language Program은.S Extension 을갖는다. ii. C Language Program은.c Extension 을갖는다.

슬라이드 1

쉽게 풀어쓴 C 프로그래밍

PowerPoint 프레젠테이션


02 C h a p t e r Java

C언어 및 실습 C Language and Practice

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

Microsoft PowerPoint - StallingsOS6e-Chap04.pptx

MPLAB C18 C

Microsoft PowerPoint - polling.pptx

리눅스커널-06

PRO1_09E [읽기 전용]

11장 포인터

untitled

PowerPoint 프레젠테이션

1217 WebTrafMon II

No Slide Title

Microsoft PowerPoint - ch07 - 포인터 pm0415

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할

Sharing Memory Between Drivers and Applications

Microsoft PowerPoint - System Programming Lab Week1.ppt [호환 모드]

PowerPoint 프레젠테이션

untitled

Transcription:

프로세스 (Process) (1) Chapter #5

Process 정의 Process 구조 Process Context Process Scheduling 강의목차 Unix System Programming 2

Program( 프로그램 ) Process 정의 (1) 기계어명령어와데이터를모아놓은실행파일 C 언어등프로그램언어로작성된소스파일을컴파일링하여생성 COFF(Common Object File Format) 등의형식으로저장 UNIX에서는파일접근모드가실행가능으로설정되어있어야하며, 주로보조기억장치에저장되어있음 Program 자체만으로실행가능한가? Unix System Programming 3

Process( 프로세스 ) Process 정의 (2) 수행중인프로그램 (an instance of a running program) 프로그램의수행환경 (an execution environment of a program) 스케줄링단위 (scheduling entity) 제어흐름과주소공간의집합 (a control flow and address space) Multitasking을지원하는객체 Task( 태스크 ) in Linux A process needs certain resources, including CPU time, memory, files, and I/O devices, to accomplish its task. (by Silberschatz) Unix System Programming 4

Program vs. Process Process 정의 (3) program loading Unix System Programming 5

Process 정의 (4) 사용자프로세스 & 커널프로세스 하나의응용프로그램실행과정은응용프로그램실행과커널함수실행으로이루어진다 사용자프로세스 응용프로그램의실행객체 커널프로세스 커널프로그램의실행객체 응용프로그램의실행은사용자프로세스와커널프로세스사이의전환실행으로이루어진다 Unix System Programming 6

Process 정의 (5) 층, 프로세스, 링크, 레벨의관계 Unix System Programming 7

Process 구조 Process 구조 (1) 실제프로그램이기억공간에로딩되어구성되는프로세스이미지 텍스트, 데이터, 스택, 힙영역으로구성 프로세스생성및관리와관련된커널데이터구조 : (1) 프로세스테이블 (2) PCB( 프로세스제어블록 ) (3) 사용자영역 (u-area) 파일디스크립터테이블, OS 스택등 Unix System Programming 8

Process 구조 (2) Process 구조 ( 계속 ) Unix System Programming 9

Process 이미지구조 Process 구조 (3) 텍스트, 데이터, 스택, 힙영역으로구성 텍스트 (text) 영역 프로그램코드부분 (assembly 언어 ) 프로그램순서에따라메모리상위번지로자람 데이터 (data) 영역 전역변수 초기화된부분과초기화되지않은부분을별도로관리 스택 (stack) 영역 지역변수, 인자, 복귀주소 함수호출순서에따라동적으로메모리하위번지로자람 힙 (heap) 영역 malloc(), calloc() 등의인터페이스로동적할당되는부분 Unix System Programming 10

Process 구조 (4) Process 이미지구조 ( 계속 ) Unix System Programming 11

Process 이미지구조 ( 계속 ) 함수호출시의스택구조 Process 구조 (5) int func2(int x, int y) { int f2_local1 = 21, f2_local2 = 22; int *pointer, i;... } void func1(){ int ret_val; int f1_local1 = 11, f1_local2 = 12;... ret_val = func2(111, 112);... } int main(){... func1();... } Unix System Programming 12

Process 구조 (6) User Stack vs. Kernel Stack 사용자스택 사용자함수호출에필요한여러가지요소들을저장 지역변수들 (local variables) 이전스택프레임에대한포인터 ( 주소 ) 함수호출수행후의리턴주소 함수호출에사용한인자들 (parameters) 커널스택 시스템호출에필요한여러가지요소들을저장 내용은사용자스택과유사 Unix System Programming 13

Process 구조 (7) 프로세스이미지에대한텍스트 (etext), 데이터 (edata), 스택및사용자영역의한계점 (end point) 을출력하여프로세스이미지구조를이해 #define PRADDR(X) printf(" X at 0x%x and value = 0x%x\n",&X,X) extern etext, edata, end; static char s = 'S'; int a,b = 1; int main(int argc,char *argv[]) { void sub1(); static int c, d =1; char m,n = 'n'; printf("main at 0x%x and sub1 at 0x%x\n",main,sub1); printf("end of text segment at 0x%x\n",&etext); PRADDR(s); PRADDR(b); PRADDR(c); PRADDR(d); Unix System Programming 14

Process 구조 (8) printf("end of statics & initialized externals at 0x%x\n", &edata); PRADDR(a); printf("end of uninitialized externals at 0x%x\n", &end); } PRADDR(m); PRADDR(n); PRADDR(argc); PRADDR(argv); for(b = 0; b<argc; b++) printf("argv[%d] at 0x%x and value = 0x%x or %s\n", b, &argv[b], argv[b], argv[b]); sub1(c); return 0; void sub1(int p) { static int t; char v; } PRADDR(t); PRADDR(p); PRADDR(v); Unix System Programming 15

Process 구조 (9) 프로세스의크기변경 : brk, sbrk Unix System Programming 16

Process 구조 (10) 프로세스의크기변경 ( 계속 ) Unix System Programming 17

Process 구조 (11) brk 와 sbrk 시스템호출을이용하여수행중인프로세스의크기를설정하고출력하는프로그램을작성하라. extern int etext, edata, end; int main(void) { int brk(), ret; char *sbrk(), *bv; system("clear"); printf("the program text ends at %08x\n", &etext); printf("the initialized data ends at %08x\n", &edata); printf("the uninitialized data ends at %08x\n", &end); bv = sbrk(0); printf("current break value is %%08x\n\n",bv); ret = brk(bv+512); /* 01000 */ printf("brk returned.... %d\n",ret); bv = sbrk(0); printf("current break value is %08x\n\n",bv); Unix System Programming 18

Process 구조 (12) ret = brk(&ret); printf("brk returned.... %d\n",ret); bv = sbrk(0); printf("current break value is %08x\n\n",bv); bv = sbrk(64); /* 0100 */ printf("sbrk returned %08x\n",bv); bv = sbrk(0); printf("current break value is %08x\n\n",bv); bv = sbrk(-1024); /* memory deallocation: -02000 */ printf("sbrk returned %08x\n",bv); printf("current break value is %08x\n\n",bv); } return 0; Unix System Programming 19

Process Context (1) 프로세스문맥 (Process Context) 커널이관리하는프로세스자원과제어흐름의집합 다음과같은 3 부분으로구성 시스템문맥 (System Context) 메모리문맥 (Memory Context) 하드웨어문맥 (Hardware Context) 프로세스실행이전환될때에문맥교환 (Context Switching) 이일어난다 프로세스스케줄링 시스템호출 (Trip) 인터럽트처리 Unix System Programming 20

프로세스문맥구조 Process Context (2) Unix System Programming 21

시스템문맥 Process Context (3) 프로세스를관리하는정보집합 태스크정보 : pid, uid, euid, suid, 태스크상태 : 실행상태, READY 상태, 수면상태, 태스크의가족관계 : p_pptr, p_cptr, next_task, next_run 스케줄링정보 : policy, priority, counter, rt_priority, need_resched 태스크의메모리정보 : 세그먼트, 페이지 태스크가접근한파일정보 : file descriptor 시그널정보 쓰레드정보 그외 : 수행시간정보, 수행파일이름, 등등 (kernel dependent) Unix System Programming 22

Process Context (4) 시스템문맥 ( 계속 ) task_struct 자료구조 /* include/linux/sched.h*/ task identification : pid, pgrg, session, uid, euid, suid, fsuid state : TASK_RUNNING, TASK_ZOMBIE, ASK_INTERRUPTABLE, TASK_UNINTERRUPTABLE, TASK_STOPPED task relationship : p_pptr, p_cptr, next_task, next_run scheduling information : policy, priority, counter, rt_priority, need_resched memory information : mm_struct signal information : signal_struct, sigpending, signal, blocked file information : files_struct, fs_struct thread information : tss time information : start_time, times, timer_list executable format : personality, exec_domain resource limits : rlim miscellaneous : flag, comm, maj_flt, min_flt, exit_code 등 Unix System Programming 23

Process Context (5) 시스템문맥 ( 계속 ) task_struct 자료구조 Unix System Programming 24

Process Context (6) 시스템문맥 ( 계속 ) PCB(Process Control Block) in Unix Process state Program counter CPU registers CPU scheduling information Memory-management information Accounting information I/O status information Unix System Programming 25

Process Context (7) 시스템문맥 ( 계속 ) PCB Management in Unix Unix System Programming 26

메모리문맥 Process Context (8) fork internal : after loading (after run a.out) & before fork Unix System Programming 27

Process Context (9) 메모리문맥 ( 계속 ) fork internal : after fork Unix System Programming 28

하드웨어문맥 Process Context (10) CPU 레지스터집합 - CPU 내에서의현재프로그램의실행상태를의미 예 : 80x86 Architecture Unix System Programming 29

Process Context (11) 하드웨어문맥 ( 계속 ) 문맥교환과정 Unix System Programming 30

Process Context (12) 하드웨어문맥 ( 계속 ) 문맥교환제어흐름 Unix System Programming 31

Process Scheduling (1) 프로세스상태 (Process State) 프로세스는여러가지상태간의변환을거치면서실행된다 프로세스상태 생성 (Initial) 상태 fork() 시스템호출로프로세스가생성된상태 준비 (Ready) 상태 CPU 를할당받기위한대기상태 실행 (Running) 상태 CPU 에서실행중인상태 휴면 (Sleep) 상태 입출력이종료될때까지대기중인상태 좀비 (Zombie) 상태 exit() 시스템호출에의해종료된상태 정지된준비 (Suspended Ready) 상태 스왑영역에서의실행준비상태 정지된휴면 (Suspended Ready) 상태 스왑영역에서의휴면상태 Unix System Programming 32

Process Scheduling (2) 프로세스상태전환 (Process State Transition) Unix System Programming 33

실행상태구분 Process Scheduling (3) 사용자수준실행 / 커널수준실행 Unix System Programming 34

Process Scheduling (4) 사용자모드 / 시스템모드 사용자가작성한프로그램은 user mode 에서수행됨 system call 나 Interrupt 는 system mode 에서수행 한프로세스가 user mode와 system mode에서동시에수행될수는없음 system mode에서는 kernel stack을사용 Unix System Programming 35

Process Scheduling (5) 프로세스스케줄링 스케줄링 자원을특정객체가사용할수있도록할당하는것 프로세스스케줄링에서는 CPU 가자원이되고, 프로세스가객체가된다 프로세스스케줄링목표 CPU Utilization 극대화 CPU cycle 의효율적인배치 프로세스스케줄링유형 선점형스케줄링 (Preemptive Scheduling) 비선정형스케줄링 (Non preemptive Scheduling) Unix System Programming 36

Process Scheduling (6) 프로세스스케줄러 (Dispatcher) 주요동작 Ready Queue 에서다음에실행할프로세스선택 선택된프로세스에 CPU 를할당 스케줄링수행시점 1. Switches from running to waiting state 2. Switches from running to ready state 3. Switches from waiting to ready 4. Terminates Unix System Programming 37

Process Scheduling (7) 프로세스스케줄링기준 공평성 (fairness) : 기아상태 (starvation) 가되는태스크가없어야된다. 효율성 (efficiency) : 태스크선택과정이빠르게수행되어야한다. 응답시간 (response time) vs 처리율 (throughput) Unix System Programming 38

Process Scheduling (8) 프로세스스케줄링알고리즘 FCFS (First Come First Service) 라운드 - 로빈 (Round-Robin) SJF (Short Job First) 다단계피드백큐 (Multilevel Feedback Queue) EDF (Earliest Deadline First) RM (Rate Monotonic) Fair Queuing(Process group이scheduling 단위 ) Gang Scheduling(Synchronization 필요한 Process group이단위 ) Scheduling for Clustering System Process Migration Unix System Programming 39

Process Scheduling (9) Unix 프로세스스케줄링 Mutilevel Feedback Queue Interactive process 의효과적인처리가능 Unix System Programming 40

Process Scheduling (10) UNIX 프로세스스케줄링철학 프로세스마다 scheduling priority 갖는다 특정프로세스가 CPU 를독점하는것을방지 특정프로세스가기아상태에빠지는것을방지 프로세스가자발적으로 CPU를반납할수도있음 (sleep 상태로전이 ) Event가발생하면 wakeup 되어다시 ready queue로들어감 CPU를사용한프로세스는 aging에의해 sleep 상태에있었던프로세스에비해 scheduling priority가낮아진다 Unix System Programming 41

Process 트리구조 (1) Unix 프로세스의생성 fork() & exec() 시스템호출 fork() 시스템호출 프로세스복제 exec() 시스템호출 프로세스변신 프로세스복제에의해부모-자식관계성립 fork() 시스템호출을호출한프로세스 부모프로세스 fork() 시스템호출에의해복제된프로세스 - 자식프로세스 Unix System Programming 42

Process 트리구조 (2) Unix 프로세스계층구조 Unix 시스템은부모-자식관계에기반하여모든프로세스를트리구조로형성하여관리한다 Process #0 스와퍼 ( 스케줄러 ) 프로세스 Process #1 init 프로세스 ( 모든프로세스의선조프로세스 ) # pstree p more Unix System Programming 43

Process 트리구조 (3) Unix 프로세스계층구조 Unix System Programming 44