본문 바로가기

과제모음

(122)
[운영체제론]예습정리(Chp5,6 / 프로세스과정) Q) 크기가 큰 HDD에서 프로세스를 실행시키기위하여 어떠한 방법으로 디스트의 불특정 영역에 존재하는 원본 Program을 찾아내는가? => 직접 HDD의 모든 범위를 검색하여 Program을 찾는것은 시간적으로도 손해이고 많은 제약이 따를 것이다. 자료구조에서 배웠던 개념인 linked-list를 활용한다면, 이러한 문제를 해결할 수 있을 것 같다. program이 최초에 설치될 당시 각각의 program마다 고유의 번호가 기재되러 있는 HeadNode를 지정하고, program이 호출이되어 process화 될때에 이 node에기재되어 있는 주소에 저장된 파일을 load해와 memory에 적재할 것이다. Q) 대기중인 process를 Queue에 저장하는데, 이 때 우선순위가 더 높은 prcess가 들..
[운영체제론]3월 4일 수업정리(프로세스, 인터럽트, BUS) 운영체제의 성질중에는 동시성(Concurrency)이 존재한다. 흔히들 동시성이라고 하면 프로세스의 동시동작을 한 예로 생각하는데 이것은 문맥교환(context switch)으로 인한 현상이다. 문맥교환은 실제로 동시동작하는것이 아닌 빠른시간내에 번갈아 가면서 프로세스를 실행시키는 방법으로 Multiple Process를 구현한다. 이 과정에서 그 교환시간이 long term일 경우에 Memory상에 이전에 실행중이었던 프로세스의 상태를 저장한다. term 이 short term일 경우에는 Memory상이 아닌 register 상에 그 데이터를 저장 하도록 한다. ? Register 도 Memory의 일종 아닌가? : 아마도 이 설명상에서의 Memory는 RAM을 말하는 것인듯하다. 위의 방법과 같은 ..
2010년 컴프2 Test레포트 오랜만에 학교에서 밤새면서 작성한 프로그램과 레포트... A+ 나왔으니까 됐다...ㅠㅠ 
네트워크 숫자야구(Client) ▷ 메인부 #include "BaseBallClient.h" void main(){ ConnectServer(); // 소켓생성및연결 playBaseBall(); // 야구게임 } ▷ 헤더부 #ifndef _BASEBALLCLIENT_H_ // 재정의오류방지 #define _BASEBALLCLIENT_H_ #include #include #include #include #define PORT 2600 // 포트번호 int ConnectServer(); // 소켓생성및연결 void playBaseBall(); // 야구게임 #endif ▷ 구현부 #include "BaseBallClient.h" WSADATA wsdata // 전역변수로소켓변수들을선언 SOCKET clientSocket struct soc..
네트워크 숫자야구(Server) ▷ 메인부 #include "BaseBallServer.h" // 헤더파일인클루드 int main(){ ReadyBaseBall(); // 소켓생성및연결 PlayBaseBall(); // 야구게임시작 } ▷ 헤더부 #ifndef _BASEBALLSERVER_H_ // 재정의오류방지 #define _BASEBALLSERVER_H_ #include #include #include #include #define PORT 2600 // 포트번호 int ReadyBaseBall(); // 소켓연결 void PlayBaseBall(); // 야구게임 #endif ▷ 구현부 #include "BaseBallServer.h" // 헤더파일 WSADATA wsdata // 소켓함수전역변수선언 SOCKET serverSo..
Thread이용한 다중채팅(Client) #include #include #include #include #define LINE 1024 DWORD WINAPI ProcessInputSend(LPVOID arg); char *escape = "exit"; char userID[10]; // 유저ID char line[LINE], chatdata[LINE+1]; struct sockaddr_in server_addr; SOCKET serversocket; // 서버 연결 소켓 int main(){ WSADATA wsa; // 소켓 HANDLE hThread; // 스레드 DWORD ThreadId; int size; // 유저ID 입력 printf("Input ID : "); gets(userID); // 소켓 초기화 if(WSAStartup(M..
Thread를 이용한 다중채팅(Server) #include #include #include #include #define LINE 1024 #define MAXCLIENT 5 int maxfdp1; int chatuser;// 채팅 참가자 수 int client_s[MAXCLIENT]; char *escape = "exit"; // 종료 명령 void disconCli(int i){ // i번째 유저 계정삭제 closesocket(client_s[i]); // i번째 소켓 닫음 if(i != chatuser-1){ client_s[i] = client_s[chatuser-1]; chatuser--; // 총유저수 줄임 printf("Now On the net %d users\n", chatuser); } } int maxuser(int user)..
Select함수를 이용한 1:1 채팅(Client) #include #include #include #include #include #include #pragma comment(lib,"ws2_32.lib") void ErrorHandling(char *message) // 에러메시지 출력 { printf(message); exit(0); } int main() { WSADATA wsaData; // 소켓 변수선언 SOCKET ServerSocket; SOCKADDR_IN servAddr; fd_set read_fds; char chatData[65536]; struct timeval time = {0,0}; char *servIP = "127.0.0.1"; // 로컬호스트연결 int recvn; if(WSAStartup(MAKEWORD(2,2),&wsa..