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

1. 목적

파일 입출력, Queue, 문자열 처리, TCP/IP 통신에 대한 복습과 스레드의 사용법을 숙지하고 WMI의 개념에 대해 실습을 통해 이해한다.

2. 입력

- 서버가 읽어들이는 실행 시간과 프로그램이 기록된 파일

3. 출력

- 클라이언트에서 Queue 목록의 프로그램을 지정된 시간에 실행, 실행된 시간과 파일명을 파일에 기록

4. 개발 환경

a. Platform : Windows

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

5. 제출 마감 기한

- 6월 16일 (목) 13:00 까지

6. 인원

- 각 팀 별

7. 제출 방식

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

8. 프로그램 설명

가. 서버의 구조도

1) 프로그램 처음 시작시 실행 가능한 프로그램 목록을 담은 큐가 자동으로 만들어지도록 한다. (예 : notepad.exe, calc.exe 등 / 이 목록은 사용자가 프로그램 시작시 직접 입력하는게 아니고 미리 입력이 되어 있도록 만든다)

2) File Manager가 파일의 내용을 읽어온다.

3) Verify Manager는 파일에서 읽혀진 목록들이 포맷(다. 자료구조 참고)이 맞는지의 여부와 실행 가능 리스트(사용자에 의해 작성됨)의 목록에 있는 파일인지에 대해서 확인한다.(위의 과정에서 문제가 있다면 문제의 여부를 알 수 있어야 하며 다음의 과정으로 진행이 되면 안된다. (프로그램 중지))

4) 읽혀진 목록들은 Queue Manager에 의해서 순서대로 Queue에 삽입이 된다.

5) Queue에 데이터가 모두 들어오면, Transfer Manager는 Queue의 데이터를 Client에게 전송한다.

6) Transfer Manager는 Thread의 형태로 구동되어야 한다.(Client가 재전송 요청시 재전송 할 수 있어야 한다.)

나. 클라이언트의 구조도

1) 실행목록을 서버로부터 전송받게 되면, Verify Manager에 의해 전송받은 실행 목록이

정상인지(포맷에 맞추어져 있는지)에 대한 여부를 판단한다. 이상이 있을 경우 서버에

재전송 요청을 해야 한다.

2) Queue Manager에 의해 현재 시간에 가장 가까운 순서대로 Queue를 sort하여 Queue에 담는다

3) Execute Manager는 Thread의 형태로 구동되어야 한다.

4) 지정된 시간이 되면 지정된 프로그램을 실행하는데, 현재 클라이언트의 CPU 사용량이

40% 이하일 때만 실행이 되야 한다. 40% 이상이면 40% 이하로 낮아질 때까지 기다렸

다가 실행되도록 한다.

5) 실행된 시간과 실행된 프로그램명을 로그파일에 기록한다.(하나의 프로그램이 실행될 때

마다 파일에 순차적으로 덮어씌우도록 한다)

다. 자료구조

- 실행 목록의 자료구조는 다음과 같다. (파일에 기록되는 형태)

- 실행 시간 | 프로그램명

- 예 : file.txt ( ‘|‘ 는 구분자임)

10:14|notepad.exe

10:30|cmd.exe

9. 참조

- CPU 사용량을 알아내기 위해서는 WMI(Windows Management Instrumentation)를 사      용해야 한다.

- Visual Studio 6.0 버전은 Platform SDK를 따로 설치해야 하고, .net 버전부터는 기본      지원한다.

- WMI 사용은 예제 코드를 제공하니, 그대로 쓰시면 됩니다. (FTP의 Sample 폴더)

(6.0 버전으로, .net 부터는 자동 변환하여 사용하시면 됩니다)

- 6.0의 경우

제공된 PSDK 설치시, 경로를 추가해야 합니다.

메뉴 중 Tools -> Options -> Directories

Show directories for -> include files에서 새로운 폴더를 추가

기본 경로 : C:\program files\microsoft sdk\include

Show directories for -> library files에서 새로운 폴더를 추가

기본 경로 : C:\program files\microsoft sdk\lib

2011 Spring OS  Term Project #2

1. Goal

Review on file input, output, Queue, string, TCP/IP and know how to use thread. Learn the concept of WMI by realizing it.

2. Input

- A server reading a file which the time and the program name is written.

3. Output

- Client executes the program on time, and write the time and the program name into a file

4. Development environment

a. Platform : Windows

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

5. Due date

- June 16th (THU) 13:00

6. The number of people

- In Group

7. How to submit

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

8. Program explanation

A. Structure of server

1) After the program first starts, it should make a Queue that which programs can be executed. ( ex: notepad.exe, calc.exe, etc. / These list should not be  inputted by the user after the program starts. It should automatically inputted.

2) File Manager reads the content of the file.

3) Verify Manager checks if the contents match according to the format(refer C. Data Structre) and the list of the executables made by queue. ( If there is a problem, it should show us what the problem is and abort the program )

4) Read contents are enqueued by Queue Manager

5) If all the data is enqueued, Transfer Manager transfers to the client of the content of the Queue

6) Transfer Manager should run as a thread. ( It should retransfer if the client requests)

B. Structure of client

1) If it receives the data from the server. Verify Manager checks wether the list is

correct or not. If there is a problem, it should request to send it again.

2) Read contents are sorted by the order of closest execute time and enqueued by
Queue Manager

3) Execute Manager should run as a Thread.

4) If the time comes, the program should be executed only if the CPU usage is under 40%. If the CPU usage is over 40%, it should wait until it lowers.

5) Write on the file of the execution time and program name. (It should overwrite on the file every time the program is executed.

C. Data structure

- Data structure of the executable file is as below. (Form written on file)

- Execution time | program name

- ex : file.txt ( ‘|‘ is separator )

10:14|notepad.exe

10:30|cmd.exe

9. Reference

- To know the CPU Usage, you must use the WMI(Windows Management	Instrumentation)

- Visual Studio 6.0 should install the Platfrom SDK.  .net supports basically.

- WMI example source code is provided for 6.0 version. You can use on .net by      auto transferring ( Sample Folder in FTP )

- In case of 6.0

If you install PSDK, you should include the path.

On the menu, Tools -> Options -> Directories

Show directories for -> include files : include the path

basic path : C:\program files\microsoft sdk\include

Show directories for -> library files : include the path

basic path : C:\program files\microsoft sdk\lib