2011년도 운영체제 1학기 Term Project #1

1. 윈도우 XP(다른 버전도 무관)의 전체 아키텍쳐에 대해서 설명하세요

(*각 Layer별로 설명)

2. 윈도우의 프로세스 스케줄링에 대해서 설명하세요

(*윈도우에서 사용되고 있는 프로세스 스케줄링에 대해서 설명)

3. 파일 시스템의 종류 별 특징에 대해서 설명하세요

(*FAT16, FAT32, NTFS)

4. 윈도우상에서 실행파일인 exe는 사용자가 Shell을 사용해서 실행하게 되는데 커널은 이에 맞는 자료구조로 읽어 들여서 메모리에 적재하게 된다. 메모리에 적재된 상태의 프로그램을 프로세스라 한다.

(문1) 프로세스가 메모리에 적재된 상태와 각각에 대해서 설명하세요

(문2) 프로세스를 제어 및 관리하기 위한 Windows API를 나열하고 설명하세요

(문3) 커널에서 프로세스를 관리하기 위한 자료구조의 각 Field(멤버 변수)에 대해서 설명하세요(*자료구조는 struct의 형태로 되어 있음)

5. 프로그래밍 (다음 페이지 참조)

파일을 이용한 프로세스 간 메시지 통신

1. 목적

공유자원을 이용한 프로세스 간 통신을 통해 상호배제를 구현함으로서 프로세스 간 동기화에 대한 개념을 이해한다.

2. 입력

- 서버의 부모 프로세스로부터 생성된 첫번째 자식 프로세스가 감시하는 텍스트 파일의 내용 입력

3. 출력

- 클라이언트 스토리지에 서버 파일로부터 읽어온 데이터를 화면에 출력

4. 개발 환경

a. Platform : Windows

b. Dev. Language : C/C++(MFC 사용 권장-Console도 무방함)

5. 제출 마감 기한

- 5월 1일 (일) 24:00 까지

6. 인원

- 각 팀 별

7. 제출 방식

- 소스와 실행 파일, 문서 파일을 압축하여 “Term1_몇조”으로 ftp://163.180.116.80 (ID :　os, PW : ospw)의 "Term 1" 폴더에 업로드

8. 프로그램 설명

가) 서버의 부모 프로세스는 자식 프로세스를 3개 생성한다.

나) 자식 프로세스 #1은 파일에 내용 입력, 프로세스 #2는 파일의 내용 읽기, 프로세스 #3은 소켓 통신을 담당한다.

다) 프로세스 #1이 파일에 내용을 쓰는 동안에는 프로세스 #2가 파일의 내용을 읽어서는 안된다.

라) 프로세스 #2가 파일의 내용을 읽고 완료 메시지를 프로세스 #3에 보내면, 프로세스 #3은 클라이언트 프로그램을 실행시킨다.

마) 클라이언트는 서버로부터 파일의 내용을 전달받고 화면에 출력한다.

(클라이언트가 실행되면 자동으로 서버로 접속하여 데이터를 받게끔 구성한다.)

※ 서버, 클라이언트는 하나의 컴퓨터에서 실행하면 됩니다.

9. 참조

프로그램 구성도

(1) Child Process 생성

CreateProcess : http://msdn.microsoft.com/en-us/library/ms682425(v=VS.85).aspx

위의 Windows API를 통해서 프로세스를 생성할 수 있으며 UNIX의 "fork-exec" 시스템 콜과 동일한 기능을 수행한다.

(2) Child Process #1에 의한 메시지 전달

파일 입출력 API를 통해서 구현 할 수 있다. 하지만 파일은 두 프로세스 간 공유되고 있기

때문에 정확한 메시지 전달을 위해서는 #1의 프로세스가 파일에 쓰고 있는 동안에는 #2의 프로

세서가 대기해야 하며 파일이 완전히 쓰여진 후에 #2 프로세스가 파일을 읽어야만 한다.

이러한 문제를 공유 자원에 대한 동기화 문제라 하며 이 문제를 해결하기 위해서는 동기화 기법

을 사용해야 하는데 운영체제에서는 이러한 문제를 위해서 다양한 동기화 기법을 제공 하고 있다.

다양한 방법이 존재하고 있지만 위 프로젝트에서는 상호배제를 하기 위한 Mutex를 사용하도록

하겠다. 아래의 API로서 상호배제를 구현 할 수 있다.

CreateMutex : http://msdn.microsoft.com/en-us/library/ms682411(VS.85).aspx

OpenMutex : http://msdn.microsoft.com/en-us/library/ms684315(v=VS.85).aspx

ReleaseMutex : http://msdn.microsoft.com/en-us/library/ms685066(v=VS.85).aspx

WaitForSingleObject : http://msdn.microsoft.com/en-us/library/ms687032(VS.85).aspx

2011 OS Term Project #1

1. Explain the whole architecture of Windows XP(Or other versions)

(*Describe by each layer)

2. Explain about Windows process scheduling.

(*Process scheduling used in Windows)

3. Explain each of the file systems

(*FAT16, FAT32, NTFS)

4. An executable file(exe file) in Windows is executed by user using Shell. Kernel loads this on memory with appropriate data structure.

A program loaded on memory is called a process.

(Q1) Explain about the process loaded on memory and each status.

(Q2) Explain the Windows APIs which control and manage the process.

(Q3) Explain each field(member variables) of data structure which manages the process in kernel. (*Data structure is composed of Struct)

5. Programming (See next page)

Message Communication between processes using file

1. Goal

Understand the concept of synchronization among processes using shared resources and mutual exclusion

2. Input

- Input some contents in the file on the server which is monitored by the first child process created by parent process

3. Output

- Output on the monitor of the data from the client

4. Development environment

a. Platform : Windows

b. Dev. Language : C/C++(MFC or Console), Java

5. Due date

- May 1st, (Sun) 24:00

6. The number of people

- In Group

7. How to submit

- Compress the source file and the execution file like "Term1_Group#" and upload it to ftp://163.180.116.80 (ID :　os, PW : ospw) folder "Term 1"

8. Explanation

a) Server's parent process should make 3 child processes

b) Child process #1 writes on file, process #2 reads the file, and process #3 does socket communication

c) Process #2 must not read the file while process #1 is writing to the file.

d) If process #2 sends the completion message to process #3, process #3 starts the client program

e) Client receives the data from server and outputs the content on the monitor

(Client should automatically connect to server and receive the data since executed.)

※ Run the server and the client in your own computer using socket

9. etc

Programming organization chart

(1) Child Process creation

CreateProcess : http://msdn.microsoft.com/en-us/library/ms682425(v=VS.85).aspx

Usse the Windows API above the create a child process

(2) Message delivery of Child Process #1

Could be realized by file input output API. But the file is shared between two processes,

process #2 shouldn't read the file while process #1 is writing.

You could solve this problem by synchronizing. There are various ways of synchronizing,

but you may use Mutex to solve this problem.

Below are the APIs that may be usesd.

CreateMutex : http://msdn.microsoft.com/en-us/library/ms682411(VS.85).aspx

OpenMutex : http://msdn.microsoft.com/en-us/library/ms684315(v=VS.85).aspx

ReleaseMutex : http://msdn.microsoft.com/en-us/library/ms685066(v=VS.85).aspx

WaitForSingleObject : http://msdn.microsoft.com/en-us/library/ms687032(VS.85).aspx