본문 바로가기

교육 및 책/실습과 그림으로 배우는 리눅스 구조3

프로세스 스케줄 프로세스 스케줄러 리눅스 커널에는 프로세스 스케줄러(Process Scheduler, 줄여서 스케줄러) 기능이 있는데 이 기능은 여러 개의 프로세스를 동시에 동작시키는 것처럼 보이게 한다. 이러한 스케줄러의 동작 방식은 다음과 같다. 하나의 CPU는 동시에 하나의 프로세스만 처리할 수 있다. 하나의 CPU에 여러 개의 프로세스를 실행해야 할 때는 각 프로세스를 적절한 시간으로 쪼개서(타임 슬라이스) 번갈아 처리한다. 프로세스 스케줄러 확인을 위한 테스트 프로그램 구현 테스트 프로그램 코드 더보기 // 필요한 헤더파일 및 상수 정의 #include #include #include #include #include #include #include #include #define NLOOP_FOR_ESTIMATI.. 2023. 8. 22.
프로세스 관리 프로세스 생성의 목적 리눅스에서는 두 가지 목적으로 프로세스를 생성한다. 목적 1: 같은 프로그램의 처리를 여러 개의 프로세스가 나눠서 처리한다. 예를 들어, 웹 서버처럼 요청이 여러 개 들어왔을 때 동시에 처리해야 하는 경우 목적 2: 전혀 다른 프로그램을 생성한다. 예를 들어, bash로부터 각종 프로그램을 새로 생성하는 경우 위의 생성 목적에 fork()와 execve() 함수를 사용한다(시스템 내부에서는 clone()과 execve() 시스템 콜을 호출한다.) fork() 함수 위 목적1에는 fork() 함수만을 사용한다. fork() 함수를 실행하면 실행한 프로세스와 함께 새로운 프로세스가 1개 생성된다. 생성 전의 프로세스를 부모 프로세스(parent process), 새롭게 생성된 프로세스를.. 2023. 8. 4.
사용자 모드로 구현되는 기능(시스템 콜) 시스템 콜 프로세스는 프로세스의 생성이나 하드웨어의 조작 등 커널의 도움이 필요한 경우 시스템 콜을 통해 커널에 처리를 요청한다. 시스템 콜의 종류는 다음과 같다. 프로세스 생성, 삭제 메모리 확보, 해제 프로세스 간 통신(IPC) 네트워크 파일시스템 다루기 파일 다루기(디바이스 접근) CPU의 모드 변경 시스템 콜은 CPU의 특수한 명령을 실행해야만 호출된다. 프로세스는 보통 사용자 모드로 실행되고 있지만 커널에 처리를 요청하기 위해 시스템 콜을 호출하면 CPU에서는 인터럽트(interrupt) 이벤트가 발생해 CPU는 사용자 모드에서 커널 모드로 변경되어 커널은 요청한 내용을 처리한다. 요청한 내용 처리가 끝나면 커널 내의 시스템 콜 처리가 종료되어 다시 사용자 모드로 전환되어 프로세스의 동작을 계속.. 2023. 8. 3.