본문 바로가기

System Programming8

[System Programming] 7장 프로세스 생성 fork() 1. 프로세스 생성 & 종료 프로세스 생성 함수 프로그램 안에서 다른 프로그램을 실행해 새로운 프로세스를 생성할 때는 system(), fork(), vfork() 함수를 사용 프로세스 종료 함수 리눅스는 프로세스가 종료되면 해당 프로세스가 어떻게 종료되었는지를 나타내는 종료 상태를 저장 자식 프로세스는 부모 프로세스에 자신이 어떻게 종료되었는지를 알리는 종료 상탯값을 리턴할 수 있음 일반적으로 종료 상탯값이 0이면 정상적으로 종료했음을 의미하고, 0이 아니면 오류가 발생했음을 의미 프로그램을 종료할 때는 exit(), atexit(), on_exit(), _exit() 함수를 사용 exec 함수군 exec 함수군은 인자로 받은 다른 프로그램을 자신을 호출한 프로세스의 메모리에 덮어씀 따라서 프로세스가 .. 2023. 10. 30.
[System Programming] 6장 프로세스 식별과 시간 측정 PID는 0번부터 시작 0번 프로세스: 스케줄러 프로세스에 CPU 시간을 할당하는 역할 수행, 커널의 일부분이므로 별도의 실행 파일은 없음 1번 프로세스: init 프로세스 프로세스가 새로 생성될 때마다 기존 PID와 중복되지 않은 번호를 할당 현재 프로세스의 PID를 검색하려면 getpid() 함수를 사용 1. PID 검색 : getpid(2) getpid() 함수의 특징 이 함수를 호출한 프로세스의 PID를 리턴 2. PPID 검색 : getppid(2) 0번 프로세스를 제외한 모든 프로세스에는 자신을 생성한 "부모 프로세스" 가 존재 PPID : 부모 프로세스의 PID 부모 프로세스의 PID를 검색하려면 getppid() 함수를 사용 ◼ [예제 6-2] getpid(), getppid() 함수로 P.. 2023. 10. 30.
[System Programming] 6장 프로세스의 개념 1. 프로세스 [Process] 프로세스 : 현재 실행 중인 프로그램을 의미 (메모리에 올라가 있는 실행프로그램) 리눅스 시스템에서는 동시에 여러 프로세스가 실행 프로세스가 계속 실행 상태에 있는 것은 아니며, 실행, 수면, 실행 대기 등 규칙에 따라 여러 상태로 변함 현재 리눅스 시스템에서 실행 중인 프로세스를 확인하려면 ps, top 명령을 사용 시스템에서 프로세스를 식별하는 데는 프로세스 ID(PID)를 사용하고, 관련 프로세스들이 모여 프로세스 그룹을 구성 세션 : POSIX 표준에서 제안한 개념으로, 사용자가 로그인해서 작업하는 터미널 단위로 프로세스 그룹을 묶은 것 프로세스 실행 시간 시스템 실행 시간 : 프로세스에서 커널의 코드를 수행한 시간 사용자 실행 시간 : 사용자 모드에서 프로세스를 .. 2023. 10. 29.
System Programming (Linux) 여러분 ~ 벌써 9월이네요. 무더운 여름은 가고, 선선한 가을이 찾아오고 있습니다~ 그 말은 2023년이 얼마 남지 않았다는 이야기겠죠..? 다들 개강을 하셨을텐데 의미있는 2학기가 되길 바라겠습니다! 여러분들을 오랜만에 찾아뵈었는데요. 이번 시간부터는 Operating System 시간에 다룬 개념들을 바탕으로 Linux 운영체제의 여러 가지 요소들에 대한 서비스를 프로그래밍으로 직접 제어하는 기술을 다루는 것을 목표로 나아갈 예정입니다. 왜 키워드가 "시스템 프로그래밍" 인 지, 다들 눈치채셨나요? 네 맞습니다. OS에서 다뤘던 '시스템 호출'과 같이 시스템에 연관된 프로그래밍을 중점적으로 다룰 예정이라, "시스템 프로그래밍"이라는 키워드로 설명하였습니다. 그럼 시작하겠습니다~ ※ 실습환경 1. VM.. 2023. 9. 11.