본문 바로가기

반응형

개발

프로세스와 신호 - 프로세스 이미지 복제 프로세스 이미지 복제- 동시에 여러 기능을 수행하고자 할 때는 스레드를 사용할 수도 있고, init이 하는 것 처럼 한 프로그램안에서 개벌젹인 프로세스를 생성할 수 있다. - fork 함수를 호출하여 생성할 수 있다. 이 함수는 현재 프로세스를 복재해서 프로세스 테이블에 새로운 항목을 생성한다. (exec처럼 현재 프로세스를 다른 프로세스로 "대체"하는 것이 아니라) 새 프로세스는 현재 프로세스의 여러 특성들을 물려받는다. 새 프로세스는 원래의 프로세스와 동알한 코드를 수행한다. 그러나 자료공간 환경 파일 서술자들은 개별적이다. #include #include pid_t fork(void); 복제를 실패하면 -1을 돌려준다.부모가 가질 수 있는 자실 프로세스 개수의 한계를 넘거나, 프로세스 테이블이 꽉찼.. 더보기
프로세스와 신호 - 프로세스 이미지 대체하기 프로세스 이미지 대체하기#include char **environ; int execl (const char *path, const char *arg0, ..., (char *)0);int execlp (const char *file, const char *arg0, ..., (char *)0);int execle (const char *path, const char *arg0, ..., (char *)0, char llconst envp[]);int execv (const char *path, char *const argv[]);int execvp (const char *file, char *const argv[]);int execl (const char *path, char *const argv[], .. 더보기
프로세스와 신호 - 새 프로세스 시작하기 새 프로세스 시작하기 #include int system (const char *string)- system 함수는 string 매개변수로 주어진 명령을 실행하고 그것이 끝날 때까지 기다린다. - 주어진 명령을 실행할 수 없으면 127을, 그 외의 오류가 발생하면 -1을 돌려준다. - 실행 했을 경우에는 중료 코드를 돌려준다.예제 실행결과 - system은 셸을 이용해서 프로그램을 실행하므로, 원하는 프로그램을 띄우기전 셸을 띄워야 하기 때문에 비효율적이고 리눅스설치본에 상당히 의존적이라 좋은 방법이 되지 못한다. 더보기
프로세스와 신호 - 프로세스 일정 관리 프로세스 일정 관리- ps 출력화면 에서 ps 명령 자체에 대한 줄 확인프로세스 3577 이 실행상태 (R) 이며 ps ax 라는 명령어로 실행되었음을 알 수 있다. R은 실행 가능한 상태이며 반드시 실행 되고 있는 상태는 아니다. -> http://bipim.tistory.com/entry/%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EC%99%80-%EC%8B%A0%ED%98%B8-%EC%8B%9C%EC%8A%A4%ED%85%9C-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EB%93%A4 위에 참고 - 프로세스들은 시간 조각이 차례로 부여디며 각 프로세스는 자신에 주어진 시간 조각 동안만 실제로 실행된다. 이 시간 조각이 짧아 여러 프로세스들이 동시에 실행.. 더보기
프로세스와 신호 - 시스템 프로세스들 시스템 프로세스들- 'ps ax '에서 나오는 프로세스를 확인 하기 STAT STAT 부호 설명 S 수면중(sleeping). 일반적으로 프로세스가 신호나 사용자 입력 완성 같은 어떤 사건을 기다리고 있는 것 R 실행중(running). 실행가능(runnable) 실행 대기열에 포함되어 있으며 실행되고 있거나 실행될 예정인 프로세스를 뜻한다. D 가로챌 수 없는 수면(대기). 일반적으로 입력이나 출력이 완료되길 기다리고 있음을 뜻함 T 중지됨. 일반적으로 셸 작업 제어에 의해 중지되었거나 디버거의 제어 하에 있는 프로세스를 뜻함 Z 소멸된 프로세스, 소위 "좀비" 프로세스 N 저순위(low priority) 태스크, 소위 "예의바른(nice)" 프로세스 W 페이징이 진행 중임 (리눅스 커널 2.6 이후에.. 더보기
프로세스와 신호 - 프로세스 구조 / 테이블 프로세스 구조 ps -ef -e : 모든 프로세스 -f : 프로세스 들의 완전한 정보 UID : 실행한 사용자 PID(Process Identifier) : 프로세스 식별자, 2~32768 까지 순차적으로 부여됨. 최대 값을 넘기면 2부터 다시 시작 / 1은 init프로세스에 쓰인다. tty : 프로세스가 어느 터미널에서 실행 되었는지time : 프로세스가 소비한 CPU 시간CMD : 프로세스를 시작하는데 쓰인 명령줄 - 프로세스는 프로그램코드를 담고 있는 메모리 영역에 자료를 기록하지 못하고, 코드들은 읽기 전용모드로 메모리에 적재된다. 수정은 할 수 없으나 여러 프로세스에 의해 공유가 될 수 가 있다. 이러한 점 덕분에 여러 사용자가 같은 프로그램을 실행 할 수 있다.- 시스템 라이브러리도 같은 경우.. 더보기
프로세스와 신호 프로세스와 신호는 리눅스와 모든 UNIX류 컴퓨터에서 일어나는 거의 모든 활동을 제어한다. 그렇기 때문에 프로세스 관리 방식에 대한 이해는 시스템프로그래머 응용프로그래머 시스템 관리자에게 크게 도움이 된다. 프로세스란 무엇인가?- 하나 이상의 스레드들과 그 스레드들에 필요한 시스템 자원들을 퐘하는 하나의 주소 공간- 실행중인 하나의 프로그램으로 간주 할 수 도 있다.- 리눅스는 다중 사용자 시스템인 만큼, 동시에 여러 명의 사용자들이 시스템에 접근할 수 있다. 각 사용자는 동시에 여러 개의 프로그램들을 실행할 수 있으며, 같은 프로그램의 여러 인스턴스들을 실행 할 수도 있다. 시스템 자체도 시스템 자원을 관리하고 사용자 접근을 제어하기 위해 여러 개의 프로그램들을 실행한다.- 실행 중인 프고르매은 프로그.. 더보기
리눅스 환경 - 로그 로그 - 여러 시스템 프로그램들은 콘솔이나 로그 파일로 로그 메시지들을 기록한다. 일반적으로 이 메시지들은 오류나 경고, 또는 시스템의 상태에 대한 좀 더 일반적인 정보를 담는다. 예를 들어 su 프로그램은 사용자가 슈퍼사용자 특권을 얻으려 했으나 실패 했다는 로그를 남긴다. - 이러한 로그들은 /usr/adm이나 /var/log 디렉터리에 저장된다, 전형적인 리눅스 설치본의 경우 /var/log/messages에는 모든 시스템 메시지들이, /var/log/mail에는 메일 시스템이 기록한 메시지들이, /var/log/debug에는 디버그 메시지들이 저장된다. 이러한 로그들에 대한 설정은 /etc/syslog.conf 파일이나 /etc/syslog-ng/syslog-ng.conf파일에서 변경할 수 있다... 더보기

반응형