[운영체제, 시스템 프로그래밍] Report #2 Process 생성
- 최초 등록일
- 2005.04.02
- 최종 저작일
- 2004.05
- 6페이지/ 한컴오피스
- 가격 1,000원
소개글
역시 운영체제 만점 3번째 숙제...
목차
Report #2 Process 생성
1. 데이터를 저장할 file parent_data.dat를 open 한다.
2. Child process 5개를 연속적으로 생성한다.(for loop 이용)
A. 하나의 프로세스(parent process)가 자식 프로세스(child process)를 5개 생성한다.
B. 새롭게 생성된 프로세스(child process)는 다시 자식 프로세스를 생성해서는 안 된다.
3. 각 child process는 다음과 같은 일을 한다.
Child #N 경우:
I. child_data#N.dat file을 open 한다. (child 1은 child_data1.dat, child 2는 child_data2.dat …)
II. random() 함수를 이용해서 (N*100)+0에서 (N*100)+99 사이의 수 ( X )를 생성한다. (child 1의
경우 100에서 199까지 수, child 2의 경우 200에서 299까지 수)
III. 생성된 X값을 parent_data.dat와 child_data#N.dat 에 기록한다.
IV. 생성된 data 1000개 마다 1000개의 평균 값을 parent_data.dat와 child_data#N.dat에 기록한다.
V. 생성된 data가 1,000,000개가 되면 프로세스를 종료하고, 아니면 II,III, IV를 반복한다.
VI. 발생한 각 수의 발생 빈도 와 각 수의 발생 빈도의 합을 parent_data.dat와 child_data#N.dat에 기
록한다.
4. 위 과정을 5번 이상 수행하고 그 결과를 비교한다.
5. 작성 프로그램과 수행결과 감상문을 제출하시오.
본문내용
#include <stdio.h> // standard input and output
#include <unistd.h> // for fork function using
#include <sys/types.h> // for fork function using
#include <time.h> // for time function using
#include <stdlib.h> // for rand function using
#define PA_FILE "parent_data.dat" // parent file name
#define MAXSIZE 1000000 // generating SIZE
void child_worker(int, FILE *);
int main()
{
FILE *fp_pa; // parent file pointer
int pid; // process id
int i; // loop control
int status;
if( ( fp_pa = fopen(PA_FILE,"w")) == NULL ) // parent file opening check
{
printf("Can not open %s!!\n",PA_FILE); // print error message
exit(1);
}
참고 자료
손수 작성하였습니다... UNIX 시스템 프로그래밍