Microsoft PowerPoint - Lecture_Note_7.ppt [Compatibility Mode]

Similar documents
슬라이드 1

좀비프로세스 2

2009년 상반기 사업계획

6주차.key

<4D F736F F F696E74202D FC7C1B7CEBCBCBDBA20BBFDBCBAB0FA20BDC7C7E0205BC8A3C8AF20B8F0B5E55D>

2009년 상반기 사업계획

Microsoft PowerPoint - Lecture_Note_5.ppt [Compatibility Mode]

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

Microsoft PowerPoint - 10_Process

금오공대 컴퓨터공학전공 강의자료

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

ABC 11장

<4D F736F F F696E74202D FB8DEB8F0B8AE20B8C5C7CE205BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - ch09_파이프 [호환 모드]

2009년 상반기 사업계획

vi 사용법

The Pocket Guide to TCP/IP Sockets: C Version

제1장 Unix란 무엇인가?

금오공대 컴퓨터공학전공 강의자료

2009년 상반기 사업계획

Chapter #01 Subject

PowerPoint 프레젠테이션

JVM 메모리구조

Microsoft PowerPoint - chap06-2pointer.ppt

<4D F736F F F696E74202D E20B3D7C6AEBFF6C5A920C7C1B7CEB1D7B7A1B9D62E >

제9장 프로세스 제어

Microsoft PowerPoint - chap6 [호환 모드]

Microsoft PowerPoint - 04-UDP Programming.ppt

제1장 Unix란 무엇인가?

PowerPoint 프레젠테이션

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

<C1A63130C0E5C7C1B7CEBCBCBDBA2E687770>

Microsoft PowerPoint - [2009] 02.pptx

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

BMP 파일 처리

/chroot/lib/ /chroot/etc/

The Pocket Guide to TCP/IP Sockets: C Version

C++ Programming

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

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

제1장 Unix란 무엇인가?

10.

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

Microsoft PowerPoint APUE(Intro).ppt

The OSI Model

슬라이드 1

The Pocket Guide to TCP/IP Sockets: C Version


슬라이드 1

제12장 파일 입출력

슬라이드 1

PowerPoint 프레젠테이션

11장 포인터

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

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

<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD>

K&R2 Reference Manual 번역본

API 매뉴얼

Microsoft PowerPoint - 09-Pipe

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

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

Microsoft Word - FunctionCall

The Pocket Guide to TCP/IP Sockets: C Version

À©µµ³×Æ®¿÷ÇÁ·Î±×·¡¹Ö4Àå_ÃÖÁ¾

Microsoft PowerPoint - 15-MARS

PowerPoint 프레젠테이션

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

3. 다음장에나오는 sigprocmask 함수의설명을참고하여다음프로그램의출력물과그출력물이화면이표시되는시점을예측하세요. ( 힌트 : 각줄이표시되는시점은다음 4 가지중하나. (1) 프로그램수행직후, (2) kill 명령실행직후, (3) 15 #include <signal.

Microsoft Word - Network Programming_NewVersion_01_.docx

C언어 및 실습 C Language and Practice

untitled

PowerPoint 프레젠테이션

chap7.key

슬라이드 1

Microsoft PowerPoint - Supplement-03-TCP Programming.ppt [호환 모드]

슬라이드 1

Figure 5.01

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

PowerPoint 프레젠테이션

Lab 3. 실습문제 (Single linked list)_해답.hwp

Microsoft PowerPoint - 13 ¼ÒÄÏÀ» ÀÌ¿ëÇÑ Åë½Å 2.ppt

윤성우의 열혈 TCP/IP 소켓 프로그래밍

제8장 프로세스

Chapter 4. LISTS

Microsoft PowerPoint - chap11-포인터의활용.pptx

02장.배열과 클래스

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

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

The Pocket Guide to TCP/IP Sockets: C Version

Microsoft PowerPoint - 06-CompSys-16-Socket.ppt

PowerPoint 프레젠테이션

C 프로그램의 기본

Microsoft PowerPoint - chap12-고급기능.pptx

쉽게 풀어쓴 C 프로그래밍

<B1E2BCFAB9AEBCAD5FB9DABAB4B1D45F F F64746F72732E687770>

Microsoft PowerPoint - 03-TCP Programming.ppt

제8장 프로세스

<4D F736F F F696E74202D20C1A63137C0E520B5BFC0FBB8DEB8F0B8AEBFCD20BFACB0E1B8AEBDBAC6AE>

문서의 제목 나눔명조R, 40pt

Microsoft PowerPoint - 05장(함수) [호환 모드]

Transcription:

Unix Process Department of Computer Engineering Kyung Hee University. Choong Seon Hong 1

유닉스기반다중서버구현방법 클라이언트들이동시에접속할수있는서버 서비스를동시에처리할수있는서버프로세스생성을통한멀티태스킹 (Multitasking) 서버의구현 select 함수에의한멀티플렉싱 (Multiplexing) 서버의구현쓰레드를기반으로하는멀티쓰레딩 (Multithreading) 서버의구현 2

Program 이란 Process 의정의 Process 란 C, C++, Java 와같은프로그램언어로작성된소스코드 Running program 생성된프로세스는운영체제의의해할당된고유한 ID를지닌다. (ps u) 하나의프로그램내에서여러개의프로세스가동시에실행될수있다. main memory hard disk Process 1 read Program 1 CPU Process 2 Process 3 read read Program 2 Program 3 Process 4 read Program 4 3

Process 의모드 Process는 User mode 또는 Kernel mode에서실행사용자모드 사용자의권한으로명령이실행커널모드 커널의권한으로실행 하드디스크를읽기위한 read() 함수 void main() { char buf[512]; int n = read(0, buf, 512}; n++; User mode 에서실행 Kernel mode 에서실행 User mode 에서실행 } exit(0); Kernel mode 에서실행 4

Process 의상태 Running state ( 실행상태 ) 프로세스가 CPU 서비스를받을수있는상태 Waiting state ( 블록상태 ) 입출력처리와같은어떤조건을기다리는상태 Stop state ( 중단상태 ) 특정시그널을커널로부터받아프로세스의동작이정지된상태 Zombie state ( 좀비상태 ) 프로세스의실행은끝났으나여전히메모리에존재하는상태 running state zombie state waiting state stop state 5

Process 의메모리배치 프로세스는일정한메모리를배정받아사용 ( 프로세스이미지 ) 프로그램실행에필요한어셈블러코드, 변수가저장 원칙적으로한프로세스는다른프로세스의메모리영역에접근불가 C 프로그램과이미지의내용 #include<stdio.h> #include<stdlib.h> 메모리영역 메모리내용및변수들 extern char **environ; int init_global_var = 3; int unint_global_var; int main(int argc, char **argv) { int auto_var; static int static_var; register int reg_var; char *auto_ptr; auto_ptr = malloc(10); return 0; } //extern 변수 // 초기화된 global 변수 // 초기화되지않은 global 변수 // 자동변수 //static 변수 //register 변수 // 자동변수 // 메모리 10byte 할당 환경변수와명령행인자영역 데이터영역 stack heap *environ 내용 argc, argv, auto_var, reg_var, auto_ptr malloc() 이할당한 10 byte 초기화안된영역 unint_global_var, static_var 초기화된영역 init_global_var = 3 코드영역 어셈블된프로그램코드 6

Stack and Heap Stack 현재호출되어실행중인함수의코드와환경정보를저장 main() 에서 printf() 를호출하였다면 main() 이차지하는영역위에 printf() 를처리하기위한메모리가할당되고 printf() 가수행 printf() 가리턴되면 printf() 와관련된영역은삭제되고프로세스의수행은 main() 으로돌아감함수내부에서임시로사용되는자동변수도스택영역에할당 Heap 스택은사용하던메모리가함수의종료와함께사라짐이문제를해결하기위해리턴되어도사라지지않도록한영역이힙 malloc() 함수를사용한영역은힙에저장 7

Stack func() 호출 process int main() { char *ptr; ptr = func(); } char *func() { char arr[10]; return arr; } 10 byte 배열할당 Address return Stack 영역 8

Heap func() 호출 process int main() { char *ptr; ptr = func(); free(ptr) } char *func() { char *arr; arr = malloc(10); return arr; } free(ptr) 호출 10 byte 배열할당 Address return heap 영역 9

메모리CPU Process 의생성과종료 프로세스 1 프로세스 2 프로세스 N 메모리 프로세스 1 의이미지 프로세스 2 의이미지 O/S 프로세스 3 의이미지.. 프로세스 N 의이미지 10

fork() 새로운프로세스를만들기위해주로사용 fork() 를호출한프로세스의이미지를복사하여새로운프로세스를생성원본프로세스의모든메모리공간 ( 데이터영역, heap, stack) 을그대로복사 부모 / 자식프로세스부모프로세스 : fork() 를호출한프로세스 fork() 의리턴값 : 자식프로세스의 PID 자식프로세스 : fork() 에의해새로생성된프로세스 fork() 의리턴값 : 0 프로세스의공유부모와자식프로세스는변수를서로공유하지않음개설한파일이나소켓은프로세스이미지외부에존재하므로공유 11

fork() 부모 / 자식프로세스의실행과리턴값 Parent process PID = 100 fork() * 자기자신을복제 * 메모리영역은독립 *PID 는다름 * 완전히복제된두개의 Process 가실행된다. Parent process PID = 100 return 값 = 101 Child process PID = 101 return 값 = 0 12

fork 함수호출을통한프로세스의생성 fork 함수호출을통한프로세스의생성은복사에의한생성이다. 원본프로세스 #include <sys/types.h> #include <unistd.h> pid_t fork(void); PID = fork(); if (PID == 0) child_work(); Fork 에의한복사 // child process 에서처리 1.. 2.. 3. pid=fork() 4. 5. 복사본프로세스 1.. 2.. 3. pid=fork() 4. 5. 리턴값은복사본프로세스 ID 리턴값은 0 else parent_work(); // parent process 에서처리 13

fork 함수호출을통한프로세스의생성 int a=10; a=10 Data 영역 int a=10; a=10 Data 영역 int main() { pid_t pid; int b=20; pid = fork();. } pid=1133 b=20 Stack 영역 int main() { pid_t pid; int b=20; pid = fork();. } pid=0 b=20 Stack 영역 원본프로세스 복사본프로세스 14

Process 의종료 종료조건 main() 함수에서 return 되는경우 exit() 함수를호출할경우프로세스종료 signal을받은경우 exit() 프로세스가자신을종료시키는데사용열려있던모든파일을닫기위해자동으로 close() 함수를호출 15

예제확인 #1 실행파일 fork.c 실행결과 16

예제확인 #2 실행파일 fork_test.c pid_t getpid(void) pid_t getppid(void) // 자신의 PID 를얻음 // 부모프로세스의 PID 를얻음 17

예제확인 #3 파일명 tcp_talkserv.c tcp_talkcli.c 프로그램설명토크서버에서는먼저 listen() 을호출하고 accept() 를호출하여클라이언트와연결하고연결이이루어지면 fork() 를호출부모프로세스는사용자의키보드입력을받아클라이언트에게전송자식프로세스는클라이언트가보내온메시지를화면에출력 strstr 문자열안에특정문자열이존재하는지여부를체크하는함수이다. char * strstr(const char * string, const char * strcharset); string에서 strcharset을검색해해당문자열위치를포인터로리턴한다. 18

예제확인 #3 19

실습과제 #4 새로운프로세스를생성하고이프로세스에서 10초간격으로현재의시간을클라이언트에게전송하는프로그램작성 TCP 이용 UDP 이용 20