- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 재능이의 돈버는 일기
- StresslessLife
- K_JIN2SM
- 소소한 일상
- My Life Style & Memory a Box
- Blog's generation
- 공감 스토리
- 취객의 프로그래밍 연구실
- Love Me
- Dream Archive
- 세상에 발자취를 남기다 by kongmingu
- hanglesoul
- 카마의 IT 초행길
- 느리게.
- 미친듯이 즐겨보자..
- Joo studio
- Gonna be insane
- 악 다 날아갔어!! 갇대밋! 왓더...
- xopowo05
- 맑은공기희망운동
- 엔지니어 독립운동
- 혁준 블로그
- Simple in Complex with Simple
- 무의식이 의식을 지배한다
드럼치는 프로그래머
[시스템프로그래밍] 3.8 프로세스 체인 구현 본문
3.8 연습문제 : 프로세스 체인
이 장에서는 [프로그램 3.1]의 프로세스 체인(chain)을 확장할 것이다. 우리는 프로세스 체인을 통해 공유 장치와 wait 함수의 특징을 실험할 수 있다. [프로그램 3.1]을 통해 생성된 모든 프로세스들은 표준 입력, 표준 출력, 표준 에러를 공유한다. 표준 에러로 출력하는 fprintf 함수는 프로그램의 크리티컬 섹션이다. 이 예제에서 크리티컬 섹션이 내포하는 의미에 대해서 추가로 알아볼 것이다. 이후의 장에서는 다른 장치를 포함하는 크리티컬 섹션을 구현하기 위해 본 예제를 확장하고(6장), 토큰링 시뮬레이션(7장)을 위해 본 예제를 사용할 것이다.
[프로그램 3.1]은 프로세스 체인을 만든다. 프로그램은 생성할 프로세스의 개수를 커맨드라인 인자로 받는다. 각 프로세스들은 종료하기 전에 i값, 프로세스 ID, 부모 프로세스 ID, 자식 프로세스 ID 등을 출력한다. 부모 프로세스는 wait 함수를 호출하지 않는다. 부모가 자식 프로세스보다 먼저 종료하면, 자식 프로세스는 부모를 잃게 된다. 이 경우, 특별한 시스템 프로세스(전통적으로 프로세스 ID가 1인 init 프로세스)가 부모 프로세스로 된다.
1. 프로세스의 개수를 다양하게 변화시키면서 [프로그램 3.1]을 실행하고 결과를 관찰하라.
2. 커맨드라인 인자가 4로 주어질 경우 [그림 3.2] 다이어그램의 프로세스 ID를 실제 프로세스 ID로 채워라.
3. 프로그램이 생성할 수 있는 최대 프로세스의 개수를 얻기 위해 커맨드라인 인자의 값을 변경시키면서 실험하라. init 프로세스에 의해 처리되는 프로세스의 개수를 관찰하라.
4. [프로그램 3.1]에서 마지막 fprintf 구문 전에 sleep(10); 을 넣어라. 이 경우 생성되는 프로세스의 최대 개수는 얼마인가?
5. [프로그램 3.1]에서 마지막 fprintf 구문 주위에 루프를 넣어라. 루프는 k번 반복된다. 루프 내의 fprintf 구문 뒤에 sleep(m); 구문을 넣어라. k와 m을 커맨드라인 인자로 받아라. 여러 가지 n, k, m 값으로 프로그램을 실행하라. 결과를 관찰하여라.
6. [프로그램 3.1]에서 마지막 fprintf 구문 앞에서 wait 함수를 호출하여라. 이것이 결과에 어떤 영향을 주나?
7. [프로그램 3.1]에서 마지막 fprintf 구문을 네 개의 fprintf 구문으로 바꿔라. 각 fprintf 구문은 네 가지 정수를 출력하도록 한다. 마지막 구문은 개행 문자를 출력해야한다. 이 프로그램을 실행하면 어떤 결과가 발생하는가? 어떤 프로세스가 어떤 결과를 출력했는지를 설명할 수 있는가? 프로그램을 여러 번 실행하고 결과에서 다른 점이 있는지 살펴보아라.
ps. 과제물이기에 올릴 수 없습니다.
궁금한 점 있으시면 메일이나 네이트온 친추해서 쪽지 주세요 rockdrumy@nate.com
'★─Multi Media > ☆─3학년 2학기' 카테고리의 다른 글
[시스템프로그래밍] I/O에서 동기적,비동기적,블록킹이란? (1) | 2009.10.14 |
---|---|
[시스템프로그래밍] 3.8 프로세스 체인 구현 ( 레포트 제출용 ) (0) | 2009.10.12 |
[시스템프로그래밍] [프로그램 3.1 3.2] 프로세스 체인, 프로세스 팬 (0) | 2009.10.09 |
[시스템프로그래밍] fork 함수와 wait 함수의 이해! 자식프로세스의 시작.. 그리고 끝! (0) | 2009.09.30 |
[영상정보처리] 수업 PPT 모음 (0) | 2009.09.21 |