[5월 7일 1교시] 프로세스 관계 + 데몬 프로세스 BSD 터미널 로그인 1. init프로세스의 자식은 getty 프로그램 실행 2. getty프로그램 : login이름을 받고 login 프로그램 수행. execle("/usr/bin/login","login","-p",username,(char*)0,envp); 3. login - password를 입력받아 암호화(crypt)하여 /etc/passwd파일과 비교. - 패스워드가 맞으면 $HOME변경 및 터미널 소유자를 로그인 한 .. 컴퓨터 공부/Advanced UNIX System Programming 2009.05.07
[5월 6일 3교시] 시스템 정보 2 달력 시간 UTC 1970년 1월 1일 00:00:00시 이후 지나간 초 시간. #include<time.h> time_t time(time_t *calptr); 현재 1970년 1월 1일 00:00:00시 이후 지나간 초를 리턴. [문자열] ←asctimeㅡ [ struct tm ] ㅡstrftime→ [형식화된 문자열] ↑ .. 컴퓨터 공부/Advanced UNIX System Programming 2009.05.06
[5월 6일 2교시] 프로세스 제어 4 + 시스템 정보 1 (265~267쪽 소스 참고) wait3함수를 이용하여 종료된 프로세스의 자원정보를 얻을 수 있음. shell에서 'time 프로그램명'과 비슷함. system함수 #include<stdlib.h> int system(const char *cmdstring); 라이브러리 함수. fork, exec, waitpid함수로 구성. 리턴 - fork나 waitpid의 EINTR외의 리턴이면 -1 - exec가 실패하면 _exit(127) - .. 컴퓨터 공부/Advanced UNIX System Programming 2009.05.06
[5월 6일 1교시] 프로세스 제어 3 프로그램의 실행 int execve(const char *path, char *const argv[], char *const envp[]); 위의 함수만 시스템 콜. 나머지 5개 함수는 라이브러리 함수. int execl(const char *path, const char *arg0, ... const char *argn, (char*) 0); - 형태로 argument는 하나씩 - l : 리스트 형태의 명령 라인 인자. int execv(const char *path, char *const argv[]); -.. 컴퓨터 공부/Advanced UNIX System Programming 2009.05.06
[5월 1일 3교시] 프로세스 제어 2 프로세스 종료 #include<stdlib.h> // 표준라이브러리 종료 void exit(int status); // 표준 입출력 정리 루틴(열린 파일들 fclose, 버퍼의 모든 데이터 flush)수행 후, _exit 호출 #include<unistd.h> // 시스템 콜 종료 void _exit(int status); 기능 : 정상적인 종료를 처리한다. status : 성공적인 수행.. 컴퓨터 공부/Advanced UNIX System Programming 2009.05.01
[5월 1일 2교시] 프로세스 제어 1 fork #include<sys/types.h> #include<unistd.h> pid_t fork(void); 기능 : 새로운 프로세스 생성 리턴 - 성공시 : (부모) 자식 프로세스의 PID, (자식) 0 - 실패시 : -1 - error값 EAGAIN : 시스템에서 허용 ENOMEM : 새로운 프로세스를 위한 swap 공간 부족 자식 프로세스의 메모리 공간 - 자식 프로세.. 컴퓨터 공부/Advanced UNIX System Programming 2009.05.01
[5월 1일 1교시] 메모리 관리 분기 지역분기(local jump) - goto문 : 함수 안에서만 분기해야 한다. 비지역 분기(nonlocal jump) #include<setjmp.h> ※ env는 전역변수로 설정. int setjmp(jmp_buf env); 기능 : 호출한 함수의 (스택 환경과) 레지스터 환경을 env(환경변수 아님)에 저장. 리턴 - setjmp가 바로 호출시 0. - longjmp를 호출하면 setjmp가 .. 컴퓨터 공부/Advanced UNIX System Programming 2009.05.01
[4월 30일 3교시] 프로세스2 fork : 프로세스 생성 - 부모 프로세스 : fork를 호출한 프로세스. 리턴값이 0이 아님 - 자식 프로세스 : fork에 의해 생성된 프로세스. 리턴값이 0 exec : 프로그램 실행 - 새로운 프로세스로 변경. -> 새로운 프로그램의 내용이 실행. - ID는 변하지 않음. 명령행 인자 - argc : 인자들의 개수 - argv[0.. 컴퓨터 공부/Advanced UNIX System Programming 2009.04.30
[4월 30일 2교시] 프로그램 개발 환경2 + 프로세스1 Make Utility 목적 - 대규모 소프트웨어 생성을 위한 도구 - 소스의 consistency 유지 형식 - 의존성(dependency) 부분 : target이름과 target을 만들 때 필요한 파일을 명세 - 명령(command) 부분 : 반드시 tab으로 시작. target1 : 의존성 부분 [탭키]명령어 부분 의존성 부분 all : shell에서 make만 입력하면 all부분을 .. 컴퓨터 공부/Advanced UNIX System Programming 2009.04.30
[4월 30일 1교시] 프로그램 개발 환경1 프로그래밍 단계 소스코드 -> 컴파일러 -> 오브젝트 코드 -> 링커(startup code, library code 포함)-> 실행가능한 코드 startup code : main code를 수행할 수 있도록 하는 code 컴파일러 세부기능: 전처리기 -> 컴파일 -> 어셈블 GCC C 컴파일러 옵션 -c : 소스파일을 컴파일하고 어셈블한다. -S : 컴파일하고 어셈블 .. 컴퓨터 공부/Advanced UNIX System Programming 2009.04.30