본문 바로가기

2010/089

프로세스 이미지 복제 동시에 여러 기능을 수행하고자 하 떄에느느 스레드를 사용할 수도ㅛ 있고 init이 하는 것처럼 한 프로그램 안에서 완전히 개별적인 프로세스를 생성할 수 도 있다. 새 프로세스는 fork 함수를 호출해서 생성할 수있다. 이 시스템 호출은 현재 프로세스를 복제해서 프로세스 테이블에 새로운 항목을 생성한다. ( exec처럼 현재 프로세스를 다른 프로세스로 대체 하는것이 아니라). 새 프로세스는 현재 프로세스의 여러 특성을 물려 받는다. 새 프로세스는 원래의 프로세스와 동일 한 코드를 수행 한다. 그러나 자료 공간과 환경, 파일 서술자들은 개별적이다. ---------------------------------------------- #Include #include pid_t fork(void); -------.. 2010. 8. 15.
프로세스 이미지 대체하기 프로세스 생성을 위한 저수준 인터페이스로 exec 가 있다. exec 함수라는 것은 사실 이름이 exec로 시작되는 일단의 함수들을 통칭한 것이다. 이 함수들은 모두 새 프로세스를 띄우는 일을 하되, 프로세스를 띄우는 방식이나 프로그램 인수들을 제공하는 방식은 서로 다르다. exec함수들은 현재 프로세스를 path 또는 file 인수로 지정된 프로그램의 새 프로세스로 대체한다. exec 함수들을 이용하면 현재 프로그램의 실행을 다른 프로그램에게 넘겨 줄 수 있다. 예를 들면 한 프로그램이 사용자의 신원을 점검한 후에 제한된 사용 방침을 가진 다른 어떤 프로그램에게 실행을 넘겨주는 등의 시나리오가 가능하다. exec 함수들의 경우 새 프로그램이 시작된 후에는 원래의 프로그램이 더 이상 실행될 필요가 없다는.. 2010. 8. 15.
새 프로세스 시작하기 새프로세스를 생성하는 것이 가능한대.. 이를 위한 시트메 호출은 system이다. #include int system (const char *string); system 함수는 string 매개변수로 주어진 명령을 실행하고 그것이 끝날 떄 까지 기다린다. system은 만일 주어진 명령을 실행할 수 없으면 127을, 그외의 오류가 발생하면 -1을 돌려준다. 명령을 실행한 경우에는 그 명령의 종료 코드를 돌려준다. ------------------------------------- system 함수 예제 ------------------------------------- #include #include int main() { printf("Running ps with system\n"); system("p.. 2010. 8. 15.
프로세스 일정 관리 출처: Beginning Lenux Programming 단일 프로세서 컴퓨터의 경우에는 한 시점에서 오직 하나의 프로세스만이 실행될 수 있으며 다른 프로세스들은 자신의 차례를 기다려야 한다. 좀 더 구체적으로 말하면, 프로세스들에는 Time slice이 차례로 부여되며 각 프로세스는 자신에 주어진 Time slice 동안만 실제로 실행된다. 그런데 이 조각의 길이가 아주 짧은 탓에 사용자는 마치 여러 프로세스들이 동시에 실행되는 것처럼 느끼게 된다. ps 의 출력에 R+ 상태를 가진 프로세스가 여러 개 나타나는 경우도 있는데, R+는 단지 해당 프로세스가 전경 (foreground) 태스크(ㅓ다른 프로세스가 종료되길 기다리거나 입, 출력이 완료되길 기다리는 것이 아닌 프로세스 )임을 뜻할 뿐이다. (눈.. 2010. 8. 14.