본문 바로가기

all95

프로세스 스케쥴링 우선순위 기반 스케쥴러 우선순위 변경 시스템 콜 nice() root가 소유한 프로세스의 경우에만 getpriority() setpriority() 2021. 7. 6.
프로세스 종료: exit void exit(int status); main 함수의 return 0;과 exit(0)의 차이점 return 0 : main()함수를 종료한다. exit(0) - 정상 종료 (비정상 종료 시에) : 즉시 프로세스를 종료한다. (이후의 코드들은 실행하지 않는다.) main()이 리턴되면, C언어에 내장되어 있는 _start 함수가 실행이 되고, 결국 exit가 실행된다. exit() atexit()에 등록된 함수들 실행한다. 열려있는 모든 입출력 버퍼 스트림 삭제한다. (stdin, stdout, stderr 등) 프로세스가 오픈한 파일들을 닫는다. tmpfile()을 통해 생성한 임시파일을 삭제한다. atexit() 프로세스가 종료될 때 실행할 함수들을 등록하는 함수 등록된 순서의 역순으로 실행 ex.. 2021. 7. 6.
프로세스 생성: copy on write copy on write : 생성 속도를 높일 수 있는 방법 사전 필요 지식 : 리눅스 프로세스는 4GB의 할당 가상 메모리를 갖는다. 3 - 4 GB는 커널 영역으로, 커널 영역 안에 커널 이미지가 들어간다. 0 - 3 GB는 사용자 영역으로, 실행 파일의 이미지가 들어간다. 커널은 모든 프로세스가 동일한 이미지 실제로 커널 영역의 메모리는 프로세스 간의 공유가 이루어진다. 문제점 : fork()의 4GB복사는 시간이 오래걸린다. 그래서 : copy-on-write 자식 프로세스 생성 시, 부모 프로세스 페이지를 우선 사용한다. 읽기가 아닌 쓰기를 해야할 때, 해당 페이지만 복사하고 분리한다. 2021. 7. 6.
Optional Forced unwrapping Optional Binding (if let) Optional Binding (guard) Nil Coalescing 2021. 7. 5.