리눅스 #프로세스 #스터디 3

리눅스 스터디 #5 프로세스 관리(응용)

빠른 프로세스 작성 처리 fork() 함수 고속화: 카피 온 라이트fork() 함수를 호출할 때 부모 프로세스의 메모리를 자식 프로세스에 모두 복사하는 것이 아니라, 페이지 테이블만 복사한다. 페이지 테이블 엔트리 내부에는 페이지에 쓰기 권한을 관리하는 필드가 있는데 이때 부모와 자식 양쪽을 대상으로 모든 페이지에 쓰기 권한을 무효화 한다. 부모 프로세스의 페이지 테이블가상 주소물리 주소쓰기 권한0 - 100500 - 600X100 - 200600 - 700X 자식 프로세스의 페이지 테이블가상 주소물리 주소쓰기 권한0 - 100500 - 600X100 - 200600 - 700X 이후, 메모리를 읽을 때 부모와 자식 사이에 공유된 물리 페이지에 접근 가능하다. 그러다 둘 중 하나가 data를 갱신하려고 ..

Linux 2025.01.19

리눅스 스터디 #3 프로세스 스케줄러

프로세스 스케줄러리눅스 커널에서 프로세스에 CPU 자원할당을 담당한다.하나의 논리 CPU는 동시에 하나의 프로세스만 처리한다.실행 가능한 여러 프로세스가 타임슬라이스 단위로 순서대로 CPU를 사용한다.논리 CPUprocess0 동작process1 동작process2 동작process0 동작..경과시간 사용시간경과시간이란? 프로세스 시작 ~ 종료까지 경과된 시간.사용시간이란? 프로세스가 실제로 논리 CPU를 사용한 시간.time 명령어를 통해 프로세스 경과시간, 사용시간을 알 수 있다. 아래와 같이 사용time ./doSomething.pyreal 0m2.357suser 0m2.357ssys 0m0.000s 여기서 real -> 경과 시간, user + sys 는 사용시간이다. user는 사용자 공간에서 ..

Linux 2025.01.19

리눅스 스터디 #2 프로세스 관리

프로세스 생성 새로운 프로세스를 생성하는 목적은 무엇일까?목적 1. 동일한 프로그램 처리를 여러 프로세스에 나눠서 처리하기 ex) 웹서버에서 다수의 요청 받기목적 2. 다른 프로그램을 생성하기 ex) bash에서 각종 프로그램을 새로 생성프로세스 생성을 실제로 실행하는 방법으로 리눅스는 fork(), execve() 함수를 사용한다. 내부적으로는 각각 clone(), execve() 시스템 콜을 호출한다.목적 1이라면 fork()만 사용, 목적 2라면 fork(), execve() 둘 다 사용한다. 같은 프로세스를 두 개를 분열시키는 fork() 함수부모 프로세스가 fork() 함수 호출커널이 부모 프로세스 메모리를 자식 프로세스 쪽에 복사1) 부모 프로세스가 fork()에서 복귀2) 자식 프로세스가 f..

Linux 2025.01.19