혼공학습단, 혼공컴운 4주차 학습 기록을 이제서야 올린다,,^^
원래 4주차는 7월 28일까지 학습 후 기록을 공유해야 했지만
여차저차 공부일정이 미뤄져 8월 5일 오늘에서야 학습 기록을 정리해 본다.
늦었지만, 앞으로는 더 학습일정을 틈틈이 잘 챙기고 미루지 않도록 노력할 것을 다짐하며!
혼공컴운 4주차 학습 레쓰고~!
4주차에서는 1~3주차간의 컴퓨터구조 학습 이후 운영체제 학습에 돌입해 9~11장을 학습했다.
4주차 학습미션은 다음과 같았다.
기본 숙제(필수): p. 304의 확인 문제 1번 풀고 인증하기
추가 숙제(선택): Ch.11(11-2) 준비 큐에 A,B,C,D 순으로 삽입되었다고 가정했을 때, 선입 선처리 스케줄링 알고리즘을 적용하면 어떤 프로세스 순서대로 CPU를 할당받는지 풀어보기
=> 이 문제를 풀기 위해서는 '선입 선처리 스케줄링 알고리즘'에 대해 알아야 한다.
선입 선처리 스케줄링은 운영체제가 사용하는 CPU 스케줄링 알고리즘의 한 종류로,
프로세스에 CPU라는 자원을 효과적으로 분배하는 일종의 '규칙'과도 같은 체계다.
이러한 CPU 스케줄링 알고리즘의 종류는 운영체제마다, 매우 다양하고 책에서도 7종류를 살펴보았는데
이를 '암기'하기 보다도 이러한 알고리즘에서 채택한 '아이디어'에 집중하여 살펴보는 것이 중요하다.
'선입 선처리 스케줄링'은 FCFS 스케줄링으로도 불리며 준비 큐(CPU 실행을 기다리는 프로세스들이 저장되는 큐)에
프로세스가 들어온 순서대로 CPU를 할당하는 방식이다. 더하여 선입 선처리 스케줄링은 비선점형 스케줄링 방식이라는 특징을 가지는데, 비선점형/선점형은 추후에 들어오는 프로세스를 기준으로 CPU를 비선점한다/선점한다로 이해하면 연상하기 쉽다. 즉, 비선점형 스케줄링 방식은 추후에 프로세스가 실행 중인 CPU 사용을 요청해도 실행하던 프로세스 종료 후에 할당받을 수 있는 스케줄링 방식이다.
따라서 A,B,C,D 순으로 삽입된 준비 큐에 선입 선처리 스케줄링 알고리즘을 적용하면 준비 큐에 삽입된 순서대로 A>B>C>D 순서대로 CPU를 할당받아 실행된다.
그리고 이 추가선택 문제는 실제 책에 있는 11-2 확인 문제와 동일한 문제였음을 푼 후에야 실감했다 ㅋㅋ
숙제 점검은 이렇게 끝이 났고 9~11 챕터를 간단하게 메모하듯 학습을 정리하며 이번 기록을 마무리해 보자.
[9강] / 한줄요약: 운영체제란 무엇이며 왜 사용해야 하는지
운영체제는 커널 영역에 적재되어 사용자 영역(응용 프로그램이 적재된 메모리 공간)을 영역별 분담하여 관리한다.
운영체제는 이중모드를 통해 자원에 대한 사용자 영역의 접근 및 사용을 관리한다. 사용자 영역은 기본적으로 사용자 모드로 실행되며 이때 자원에 접근은 불가하다. 따라서 사용자 영역은 자원을 이용하기 위해 커널모드 변경으로 운영체제의 도움을 받아 자원을 할당받고 실행할 수 있다. 즉 이중모드는 사용자모드와 커널모드를 말한다.
운영체제는 자원을 할당하는 역할을 수행하는 만큼 CPU 할당에도 관여하는데 시스템 호출(인터럽트)의 도움을 받아 효율적인 CPU 자원 할당을 도모한다. 또한 사용자 모드에서 커널 모드 전환을 위해 사용되는 것이 시스템 호출이기도 하다.
[10강] / 한줄요약: 프로세스와 스레드
프로세스란 메모리에 올라가 실행을 준비하는 프로그램이다. 이러한 프로세스는 포그라운드, 백그라운드(데몬, 서비스) 프로세스로 종류가 나뉘며 PCB(프로세스 제어 블록)에 프로세스의 정보를 저장하여 파악한다.
프로세스 메모리 동적 할당 구역: 스택, 힙 / 정적 할당 구역: 데이터, 코드
프로세스를 실행하는 과정에서 다른 프로세스 실행으로 바꾸는 '문맥 교환'도 빈번히 발생하는데, 이때 PCB를 활용하여 백업 및 복구 작업을 구현할 수 있다. 문맥 교환은 CPU 스케줄링에 필수적인 기술이며 너무 많이 발생하면 오버 헤드 문제를 야기한다.
프로세스는 실행 과정에 따라 생성 / 준비 / 실행 / 대기 / 종료 상태로 구분되는 '프로세스 상태 다이어그램'을 가지며 부모-자식 프로세스 계층 구조를 가진다. fork() 실행을 통해 자식 프로세스를 생성할 수 있으며 exec를 통해 자식 프로세스의 경우 부모로부터 복제된 프로그램을 실행하기 위한 세팅 후 실행이 가능하다.
마지막 스레드는 프로세스 내 실행 흐름 단위로 여러 프로세스를 동시에 실행하는 '멀티프로세스', 여러 스레드로 프로세스를 동시에 실행하는 '멀티스레드'의 비교를 통해 스레드의 특징을 뚜렷이 파악할 수 있다. 멀티프로세스와 멀티스레드로 구현한 프로그램의 결과는 동일하더라도 가장 큰 차이는 프로세스 간에는 자원 공유를 하지 않아 문제가 발생해도 모든 프로그램이 문제를 겪지 않지만, 동일한 프로세스에 소속된 스레드는 서로 자원을 공유하기 때문에 하나의 스레드에 문제가 발생하면 다른 스레드도 영향을 받는다.
[11강] / 효과적인 자원 분배, CPU 스케줄링
11강에서는 앞서 추가 선택 문제에서 적용한 개념인 CPU 스케줄링에 대해 중점적으로 다룬 강의라 더 추가적으로 기록할 중심 내용은 없으나, 효과적인 CPU 스케줄링 알고리즘을 구현하기 위해 다양한 개념을 사용한다는 것 정도만 알아두면 좋을 것 같다.
- 호위효과 : 프로세스의 실행시간보다 CPU 할당받기 위해 대기 시간이 더 긴 경우
- 기아 현상 : 우선순위에 밀린 프로세스가 계속해서 CPU 할당 순서에서 밀려나 대기하는 경우
- 에이징 기법 : 대기 시간에 비례하여 우선순위를 업그레이드하는 기법
- 타임 슬라이스 : CPU 할당 후 실행시간을 일정하게 정하여 할당하는 기법
'studylog' 카테고리의 다른 글
[혼공컴운] 혼공학습단 12기를 마무리하며 (0) | 2024.08.19 |
---|---|
[혼공컴운] 6주차_페이지 교체 알고리즘과 파일 시스템 (0) | 2024.08.18 |
[혼공컴운] 3주차_컴퓨터구조 마무리! (0) | 2024.07.21 |
[혼공컴운] 1주차_컴퓨터 구조부터 차근차근 (ps.운영체제 딱 기다려!) (0) | 2024.07.04 |
240625 가천대 DNA School 헬스케어 파이썬 분석 실무 3일차 (0) | 2024.07.01 |