인프런 커뮤니티 질문&답변

rhkdtjd_12님의 프로필 이미지
rhkdtjd_12

작성한 질문수

그림으로 쉽게 배우는 운영체제

2번째 복습 스터디📖 를 진행하고 스터디원분들과 나눈 질문들 입니다. (운영체제)

작성

·

53

·

수정됨

2

  1. .exe 더블클릭 시 프로세스가 새로 생성되는 걸까요 아니면 0번 프로세스를 복사해서 사용하는 것일까요?

강의에서는 강의에서 운영체제가 부팅 되었을 때 0번 프로세스가 생성되는데 이 작업은 부팅 시 최초 1번만 실행되고 이후의 프로세스 생성은 0번 프로세스를 fork() 복사해서 사용한다고 했습니다. 그리고 .exe파일을 실행하면 여러 과정을 거쳐 프로세스가 생성된다고 언급되었습니다. 프로세스는 부팅할 때 1번만 생성되는데 강의에서 언급하신 .exe파일을 클릭해서 프로세스를 생성하는 과정에 대해 의문이 생겼습니다. 그래서 리눅스 부팅방식에 대해 검색해봤는데

리눅스에서 부팅이 되면 커널에서 0번 프로세스 생성(강의에서 배운방식) -> 이 0번 프로세스는 커널 내부의 프로세스로 사용자가 직접적인 관련이 없음. 실제로 사용자가 접하는 프로세스는 이 0번 프로세스를 fork() 한 1번 프로세스다.

1번 프로세스는 최초 사용자 공간의 프로세스이고 init 또는 systemd를 생성한다.

그 이후부터 강의에서 배운 내용처럼 1번 프로세스(강의에서 0번 프로세스)를 기준으로 fork() 하여 자식 프로세스들을 생성한다.

라고 검색되었습니다. 그럼 모든 프로세스는 부팅시에 만들어진 0번 프로세스를 복사해서 만들어진 것일텐데 그럼 .exe를 실행했을 때 새로운 프로세스가 생기는 과정은 무엇인지 궁금합니다.


2. 운영체제가 CPU스케줄링 알고리즘을 선택하게 할 수 있나요?

검색했을 때 리눅스의 경우

리눅스 기준으로 운영체제가 고정된 CPU 스케줄링 알고리즘 CFS 사용한다.

운영체제는 특정 프로세스 그룹에 SCHED_RR을 적용하고, 다른 프로세스 그룹에 SCHED_FIFO나 다른 정책을 적용할 수 있다.

라고 언급되었습니다. 만약 운영체제가 특정 알고리즘을 적절한 상황을 스스로 판단해서 해당 CPU 알고리즘을 스스로 사용하는것이라면, 사용자가 직접 MLFQ 스케줄 알고리즘을 사용해야 하는 작업을 RR등의 다른 스케줄링 알고리즘으로 작업하게끔 명령 할 수 있을까요?

3. 91초 - MLFQ 왜 90초가 아니라 91초인가?

MLFQ 강의 3:59초

  • I/O 사용율에서 P2가 기다린 시간이 91초가 아니고 90초가 아닌가용?

    • 타임 슬라이스가 100초이고 p1 프로세스가 10초를 사용하고 p2 프로세스가 그럼 90초를 기다린게 아닌가요?

답변 2

1

감자님의 프로필 이미지
감자
지식공유자

안녕하세요 rhkdtjd_12님!

1. 이 과정도 똑같습니다.

image.png

만약 해당 구조에서 일반적인 방식인 쉘 명령어로 .exe를 실행한다면 .exe를 실행하는 프로세스(여기선 bash)는 fork() 함수로 자신을 복사하고 exec() 함수 호출을 통해 .exe의 코드를 복사해 사용자가 만든 코드를 실행합니다. 그럼 위 사진에서 bash프로세스의 자식으로 ps를 실행하는 프로세스와 emacs를 실행하는 프로세스에서 game.exe를 실행하는 프로세스 총 3개가 실행됩니다.

2. 인프런 AI 인턴의 답변으로 대체하겠습니다.

3. I/O작업이 완료되고 새로운 I/O작업이 요청되는데 기다리는 시간을 말합니다.
이런 이유로 타임 슬라이스가 1초인 상황에서는 1초를 기다린다고 표현했습니다.

 

궁금증이 해결되셨나요? 😊

rhkdtjd_12님의 프로필 이미지
rhkdtjd_12
질문자

정말 감사드립니다 감자님!!!

감자님의 프로필 이미지
감자
지식공유자

0

안녕하세요, 인프런 AI 인턴입니다.

rhkdtjd_12님께서 운영체제 강의를 수강하면서 좋은 질문들을 많이 나눠주셨네요. 질문마다 간단히 설명을 드리고, 유사한 질문에 대한 답변 링크를 제공해드리겠습니다.

1. .exe 더블클릭 시 프로세스 생성 과정

프로그램(.exe)을 실행하면 운영체제가 해당 프로그램을 새로운 프로세스로 메모리에 생성합니다. 부팅 시 생성된 0번 프로세스는 일반적으로 커널에서 사용되는 프로세스이며, 사용자가 직접 실행하는 프로세스는 0번 프로세스를 복사한 것이라고 합니다. 즉, 0번 프로세스는 커널 프로세스이고, 사용자가 실행하는 것은 이 커널 프로세스의 자식으로써 자체적인 메모리 공간에서 돌아갑니다. 관련해서 이 질문을 참조하시면 도움이 될 것입니다.

2. 운영체제가 CPU 스케줄링 알고리즘 선택

일반적으로 운영체제는 기본 스케줄링 정책을 사용하지만, 일정한 프로세스 그룹에 대해 다른 정책을 강제할 수 있습니다. 리눅스에서는 chrt 명령어를 사용하여 프로세스에 다른 스케줄링 정책을 설정할 수 있습니다. 스케줄링 정책을 변경하는 것은 시스템 관리자의 역할이므로, 일부 사용자의 개별 설정은 제한될 수 있습니다.

3. MLFQ - 왜 91초인가요?

MLFQ에서 프로세스가 특정 시간 동안 대기하는 경우, 해당 시간 동안 다른 프로세스가 CPU를 점유하고 있기 때문입니다. 이 과정에서 대기 시간을 계산할 때, 컨텍스트 스위칭이나 기타 OS의 작업으로 인해 실제 대기 시간이 달라질 수 있습니다. 이는 알고리즘의 타이머와 스케줄링의 세부사항에 기인할 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

rhkdtjd_12님의 프로필 이미지
rhkdtjd_12

작성한 질문수

질문하기