[CS기초] 10-11주차 개념정리

2025. 5. 27. 11:50·크래프톤 정글/CS기초(키워드, 개념정리)

10-11주차 개념 정리

아래의 내용을 코드 블럭 우측 상단의 Copy 버튼을 눌러 복사한 뒤, 퀴즈 로봇(신명훈 학우 제작)의 프롬프트에 붙여넣기하면 핵심 개념들에 대한 퀴즈를 풀어볼 수 있습니다.

 

□ MLFQS
■ MLFQS 개념
사용자 프로그램의 특성을 파악하여 동적으로 우선순위를 조정하는 다단계 피드백 큐 스케줄러.
과도하게 CPU를 사용한 프로세스는 낮은 우선순위 큐로, 적게 사용한 프로세스는 높은 우선순위 큐로 이동해 공정성을 보장

■ MLFQS 동작방식
	1. 새로운 프로세스는 최상위 큐에서 시작
	2. 할당 시간보다 빨리 종료되면 높은 우선순위 큐 유지
	3. 시간 할당을 초과하면 낮은 우선순위 큐로 이동
	4. 오랫동안 CPU를 얻지 못한 프로세스는 다시 상위 큐로 이동시켜 기아 상태(Starvation)를 방지

■ MLFQS 특징
	• 여러 개의 우선순위 큐
		○ 각 큐는 서로 다른 우선순위와 정책을 가짐
		○ 위쪽 큐일수록 높은 우선순위
        ○ 큐 간에 이동이 가능
	• 높은 우선순위 큐일수록 할당 시간이 작음
	• CPU를 오래 사용하는 프로세스는 강등, 입출력 위주 프로세스는 상위 큐를 유지 또는 승급

■ MLFQS의 장점과 단점
▶ 장점
	• 다양한 프로세스 특성에 대응이 가능
	• 반응성이 뛰어남
	• 자동으로 CPU-bound와 I/O-bound를 판단
▶ 단점
	• 구현이 복잡함
	• 정책 설계 실패 시 성능이 저하될 수 있음
	• 과도한 피드백은 비효율적일 수 있음

■ MLFQS 우선순위 반영 요소
	• recent_cpu (최근 CPU 사용량)
		○ 값이 높을수록 우선순위 하락
	• load_avg (시스템 평균 부하)
		○ 값이 높을수록 전체 프로세스 우선순위 하락
	• nice (양보 정도)
		○ 값이 높을수록 우선순위 하락

■ Round Robin와 MLFQS의 차이점
	• Round-Robin은 단순하게 모든 프로세스에 동일한 시간을 할당하며, 우선순위 개념이 없음
		○ 한 프로세스가 너무 오래 CPU를 연속적으로 쓰는 것을 방지
		○ Ready Queue에 계속 등록되면 우선순위 제한 없이 CPU를 반복해서 획득할 수 있어, CPU 독점 완전 방지 불가
	• MLFQS는 최근 CPU 사용량을 반영해 조정된 프로세스 우선순위에 따라 CPU를 할당
		○ CPU 사용량에 비례한 우선순위 조정으로 프로세스 간의 공정성을 확보
		○ 구현이 복잡하고 계산 오버헤드가 큼
────────────────────────────────────────────────────────────────────────────────────────────────────
□ User mode vs Kernel mode
▶ User Mode (유저 모드)
응용 프로그램이나 사용자 프로세스가 동작하는 제한된 권한의 모드
	• 시스템 자원(하드웨어, 메모리 등)에 직접 접근 불가
	• 시스템 자원 접근은 시스템 콜을 통해서만 가능
	• 안전성과 보안을 위해 제한된 환경을 제공

▶ Kernel mode (커널 모드)
운영체제의 핵심 기능이 실행되는 특권 모드
	• 시스템 자원에 직접 접근 가능
	• 하드웨어 관리, 메모리 관리, 프로세스 스케줄링 등 핵심 작업 수행
	• 잘못된 코드나 버그 발생 시 시스템 전체에 영향을 미칠 수 있는 위험 존재
────────────────────────────────────────────────────────────────────────────────────────────────────
□ Register vs Memory
▶ Register (레지스터)
CPU 내부에 있는 작고 빠른 저장장치. 데이터를 일시적으로 저장하고 처리하는 데 사용
	• 매우 빠른 대신, 매우 작다
	• 비용이 비싸다
	• 직접 접근 방식 (Direct Access)

▶ Memory (메모리)
CPU 외부에 위치하며, 실행 중인 프로그램 및 데이터를 일시적으로 저장하는 장치
	• 상대적으로 느린 대신, 상대적으로 더 크다
	• 비용이 상대적으로 저렴하다
	• 주소 기반 접근 방식 (Address-based)
────────────────────────────────────────────────────────────────────────────────────────────────────
□ User Stack (사용자 스택)
운영체제가 관리하는 메모리 영역 중 하나로, 각 프로세스마다 독립적으로 할당되는 공간.
주로 프로그램이 사용자 모드(User Mode)에서 동작할 때 사용된다.

▶ User Stack의 주요 역할
	• 함수 호출 관리(복귀 주소, 매개 변수 저장 등)
	• 지역 변수 관리
	• 임시 데이터 저장(연산 등)

▶ User Stack의 특징
	• LIFO 구조
	• 크기가 제한적이며, 공간 초과 시 Stack Overflow 오류 발생
	• 높은 메모리 주소에서 낮은 메모리 주소 방향으로 확장
────────────────────────────────────────────────────────────────────────────────────────────────────
□ System Call
사용자 프로세스가 파일 입출력, 프로세스 제어, 메모리 관리 등
운영체제가 제공하는 커널 수준의 서비스에 접근하기 위해 사용하는 공식적인 인터페이스

▶ Syscall의 동작 흐름
	1. 사용자 모드에서 요청
	2. 커널 모드 진입
	3. 요청 처리
	4. 처리 결과 반환 및 사용자 모드 복귀

▶ Syscall의 필요성
	• 보안성: 사용자 프로세스가 임의로 하드웨어를 조작하는 것을 방지
	• 안전성: 하나의 프로세스 오류가 전체 시스템에 영향을 주지 않도록 보호
	• 일관성: 모든 프로세스가 동일한 인터페이스를 통해 자원을 사용하게끔 만듦
────────────────────────────────────────────────────────────────────────────────────────────────────
□ File Descriptor
운영체제가 관리하는 정수 형태의 고유 식별자로, 열린 파일이나 입출력 스트림을 식별하는데 사용된다

▶ File Descriptor의 특징
	• 정수형 식별자
		○ 0 이상의 정수이며, 파일이나 스트림과 연결됨
	• 운영체제 관리
		○ 각 프로세스는 독립적인 파일 디스크립터 테이블을 가지며, 이를 통해 자원을 관리
	• 기본 디스크립터
		○ 모든 프로세스는 기본적으로 표준 입력(0), 표준 출력(1), 표준 에러(2)를 가짐
────────────────────────────────────────────────────────────────────────────────────────────────────
□ Cache (캐시)
컴퓨터 시스템에서 자주 접근하는 데이터에 대해,
'빠르게 접근 가능한 임시 저장소'에 보관하여 성능을 향상시키는 메모리 기술.

▶ Cache의 필요성
메인 메모리(RAM)는 CPU에 비해 상대적으로 매우 느리기 때문에, CPU-메모리 간 속도 차이를 줄이기 위해 사용

▶ Cache의 동작 원리
	• 지역성(Locality): CPU가 짧은 시간 동안 동일한 메모리 위치 집합에 반복적으로 접근하는 경향
		○ 시간적 지역성: 최근 접근한 데이터를 다시 접근할 가능성이 높은 경향
		○ 공간적 지역성: 접근한 데이터 근처에 있는 데이터가 연속적으로 접근될 가능성이 높은 경향
────────────────────────────────────────────────────────────────────────────────────────────────────
□ Atomic Operation (원자적 연산)
실행 도중 중단되거나 다른 작업에 의해 방해받지 않고 한 번에 완전하게 수행되는 일련의 연산.
즉, 중간에 중단되지 않고 전부 성공하거나 전혀 수행되지 않음.

▶ Atomic Operation의 필요성
	• Race Condition(경쟁 상태) 방지
	• 데이터 일관성 보장
────────────────────────────────────────────────────────────────────────────────────────────────────
□ rax register
x86-64에서 사용하는 주요 범용 레지스터 중 하나로, 과거부터 지금까지 연산을 담당해온 레지스터의 진화된 형태

▶ rax register의 특징
	• 범용 레지스터: 다양한 연산과 데이터의 임시 저장 용도로 사용
	• 함수 반환값 저장
	• 곱셈/나눗셈 연산의 특수 레지스터: 중간 연산 값 또는 결과값을 저장
────────────────────────────────────────────────────────────────────────────────────────────────────
□ 32 bit OS (x86) vs 64 bit OS (x86-64)
CPU의 레지스터 크기를 기반으로 나눠지는 운영체제 종류

■ 주요 차이점
	• 메모리 접근 범위
		○ 32비트 OS는 RAM을 최대 4GB까지만 인식 가능
		○ 64비트 OS는 대용량 메모리도 인식이 가능해 고사양 작업, 서버에 유리
	• 프로세스 명령어 셋
		○ 64비트 OS는 더 많은 레지스터와 향상된 연산 능력 제공
	• 소프트웨어 호환성
		○ 32비트 OS에서는 64비트 프로그램 실행 불가능
		○ 64비트 OS에서는 대부분의 32비트 프로그램 실행 가능
	• 성능
		○ 일반적인 사용에는 큰 차이가 없음
		○ 다만 과학 계산, 대규모 데이터 처리 등에서는 64비트가 유리
────────────────────────────────────────────────────────────────────────────────────────────────────
□ Interrupt
CPU가 프로그램을 실행하는 도중, 내부에서 발생하는 긴급한 처리 요청에 의해 현재 작업을 잠시 중단하고
우선 처리해야 하는 작업을 처리한 후 원래 작업으로 복귀하는 메커니즘

▶ Interrupt의 필요성
	• I/O작업 등 대기 시간이 긴 작업에 대한 알림 역할
	• CPU가 특정 작업의 완료를 기다리지 않고 다른 작업을 계속할 수 있게 만듦
		○ 효율적인 CPU 자원 활용 가능
		○ 시스템 반응성 향상

▶ Interrupt의 유형
	• 하드웨어 인터럽트
		○ 외부 장치(키보드, 마우스)에 의해 비동기적으로 발생
	• 소프트웨어 인터럽트
		○ 프로그램 내부에서 명시적으로 호출하여 동기적으로 발생
		○ 대표적으로 System Call이 있음
	• 예외(Exception)
		○ 프로그램 실행 중 오류(0으로 나누기, 잘못된 메모리 접근 등)로 인해 동기적으로 발생
		○ 대표적으로 Trap(예측 가능한 예외), Fault(복구 가능한 예외), Abort(복구 불가능한 예외) 등이 있음
────────────────────────────────────────────────────────────────────────────────────────────────────
□ Segmentation Fault
프로그램이 운영체제가 허용하지 않은 메모리 주소 영역에 접근하려고 시도할 때, 강제로 해당 프로그램을 종료시키는 오류.

▶ Segfault의 주요 원인
	• NULL 또는 초기화되지 않은 포인터 역참조
	• 허용된 범위를 벗어난 배열이나 메모리 영역 접근
	• 이미 해제된 메모리 접근(dangling pointer)
	• 읽기 전용 영역 변경 시도
저작자표시 비영리 변경금지 (새창열림)

'크래프톤 정글 > CS기초(키워드, 개념정리)' 카테고리의 다른 글

[CS기초] 가상 메모리 시스템의 기본 구조 (Virtual Memory, Page Table, TLB)  (0) 2025.06.09
[중간정리] 10-11주차: 커널모드/사용자모드, 컨텍스트 스위칭, fsync, MLFQS  (0) 2025.05.28
[CS기초] Segmentation Fault 핵심 정리  (1) 2025.05.18
[CS기초] Interrupt란 무엇인가?  (0) 2025.05.18
[CS기초] rax Register 핵심 개념 정리  (0) 2025.05.18
'크래프톤 정글/CS기초(키워드, 개념정리)' 카테고리의 다른 글
  • [CS기초] 가상 메모리 시스템의 기본 구조 (Virtual Memory, Page Table, TLB)
  • [중간정리] 10-11주차: 커널모드/사용자모드, 컨텍스트 스위칭, fsync, MLFQS
  • [CS기초] Segmentation Fault 핵심 정리
  • [CS기초] Interrupt란 무엇인가?
그냥사람_
그냥사람_
IT 관련 포스팅을 합니다. 크래프톤 정글 8기 정경호
  • 그냥사람_
    그냥코딩
    그냥사람_
  • 전체
    오늘
    어제
    • 글 전체보기 N
      • 크래프톤 정글
        • 로드 투 정글(입학시험)
        • CS기초(키워드, 개념정리)
        • 컴퓨터구조(CSAPP)
        • Code 정글(C언어)
        • Equipped in 정글(나만무)
        • 마이 정글(WIL, 에세이)
      • 자료구조&알고리즘
        • 자료구조
        • 알고리즘
      • Flutter N
      • 일상
  • 블로그 메뉴

    • 홈
  • 링크

    • Github
  • hELLO· Designed By정상우.v4.10.3
그냥사람_
[CS기초] 10-11주차 개념정리
상단으로

티스토리툴바