컴퓨터 공부/Advanced UNIX System Programming

[4월 30일 2교시] 프로그램 개발 환경2 + 프로세스1

려리군 2009. 4. 30. 10:18

Make Utility 목적

 - 대규모 소프트웨어 생성을 위한 도구

 - 소스의 consistency 유지


형식

 - 의존성(dependency) 부분 : target이름과 target을 만들 때 필요한 파일을 명세

 - 명령(command) 부분 : 반드시 tab으로 시작.

target1 : 의존성 부분

[탭키]명령어 부분


의존성 부분 all : shell에서 make만 입력하면 all부분을 실행한다.

매크로 변수 : $(매크로) 방식으로 사용한다.


프로세스

ps(shell 명령) : 프로세스 상태를 확인한다.

옵션

 -a : session leader(터미널) 정보 제외

 -f : full 정보를 보여준다.

 -l : long list 정보를 보여준다.

상태

 - O : 프로세스 수행 중.

 - T : suspended. 신호에 의한 프로세스 정지상태. 

 - S : Sleeping, R : Runnable, Z : Zombie(부모가 기다리지 않는 상태)


※ nice : 프로세스 우선순위를 양보를 잘 하게 바꿔준다.


프로세스 관리에 사용되는 자료구조

 - 사용자 구조 : 프로세스 수행 중에 필요한 정보 저장

 - 프로세스 테이블

 - 커널 스택 : 사용자 프로그램에서 기생.

 - 프로세스 영역 : text, data, user stack, heap...


사용자 구조

 - user.h에 정의

 - 에러코드, 권한, proc 포인터, inode들(현재, 루트, 부모 디렉터리)

 - file descriptor, handler, 수행된 시간(사용자 및 커널 모드)

 - umask, kernel stack, 

 - text, data, stack segment 크기

 - 시스템 호출 인자 = 시스템 콜에 필요한 인자


프로세스 테이블

 - proc.h에 정의

 - 프로세스 상태, 플래그,  우선순위, 대기 시간, 처리되지 않은(pending) 시그널

 - 최상위 레벨 프로세스, 부모 프로세스

 - swap 가능한 부분 주소와 크기

 - 사용자 구조에 대한 포인터

 - 등등


사용자 스택

 - 지역변수(local variable), 스택 프레임 포인터, 리턴 주소, 호출에 사용한 인자(arguments)들.

 - 참고주소 : http://churack.tistory.com/tag/Stack%20Frame


프로그램의 메모리 상 구조

 - Text 영역(명령어 코드), 데이터 영역(초기값 가짐), 비초기화 데이터 영역(bss), 힙, 스택