• Home
  • About
    • Jiwon Jeong photo

      Jiwon Jeong

      끊임없이 배우며 성장하는 엔지니어

    • Learn More
    • Email
    • Github
  • Posts
    • All Posts
    • All Tags
    • All Categories
  • Projects

운영체제 종합정리

25 Dec 2019

Reading time ~2 minutes

들어가기 전, 기본 내용 정리!

CPU와 메모리의 상호작용

그 외 주요 내용

  • 캐쉬 : 좀 더 작고 빠른 메모리가 크고 느린 메모리의 임시 저장소

  • 레지스터 : CPU의 연산 장치에 직접적으로 값을 전달. 실제 계산용 데이터 저장소.

  • 인터럽트 발생 시 처리 과정
  1. 원래 응용프로그램 프로세스가 수생되고 있다가 인터럽트 발생시 해당 프로그램 실행 중단
  2. 인터럽트를 처리하기 위한 운영체제 코드 수행 (=운영체제가 CPU를 획득) by 인터럽트 핸들러-> 아래그림 참고
  3. 인터럽트 루틴이 완료되면 다시 처음에 수행하던 프로세스가 수행

Operating System의 구조

  • 시분할
  • 다중프로그래밍 (여러개의 프로세스가 동시에 Main Memory 공유) -> 메인 메모리에는 여러개의 프로세스가 적재
  • 빈번한 작업 교체 (CPU Switching)

  • CPU 스케줄링: 어떤 프로세스가 CPU에 할당될 것인가?

  • Swapping : 프로세스가 요구하는 메모리가 부족할 때 일부 프로세스를 디스크에 저장

  • 가상 메모리 : 수행 중인 프로세스가 완전히 주 메모리에 없어도 된다!

프로세스의 구조

  1. Stack : 일반 Function, 지역번수

  2. heap : malloc(동적 메모리 할당)

  3. data : 전역 변수

  • 여러개의 프로세스가 메모리에 적재되면 다음과 같은 그림으로 나타낼 수 있다.

프로세스의 상태

  • Ready : 실행 가능한 상태에서 CPU의 호출을 기다린다 (CPU는 PC가 가리키는 명령을 메모리에서 읽어온다)

  • Running : 실행 중

  • Waiting : 프로세스가 이벤트 발생을 기다니리는 중(얘는 나중에 Ready Queue로 가야 Running 상태가 될 수 있다!)

프로세스 간 통신의 방법

  • (a) Message Passing : 서로 다른 컴퓨터의 통신에 유용, 속도 느림

  • (b) Shared Memory : 속도, 편의성에서 우수 but 동기화 필요, 프로세서 수가 증가할 경 우 성능 저하 (캐시 일관 성 문제 등 발생)

  • RPC 등

쓰레드

  • 프로세스 내에서 코드, 데이터, 운영체제 자원(파일) 등을 공유

프로세스 동기화

  • Critical Section (임계구역) : 프로세스들끼리 공유하는 데이터를 접근하는 부분

  • Critical Section 문제

  1. Mutual Exclusion(상호배제) : 동시에 두 프로세스가 임계구역에 있을 수 없다

  2. Progress(진행) : 임계구역에 있는 프로세서가 없다면, 임계구역에 들어가기를 원하는 프로세스들 중의 하나가 반드시 진입이 허용되어야 한다

  3. Bounded Waiting(한정된 대기) : 임의의 한 프로세스가 진입 요청 후 진입이 허용 될 때까지 다른 프로세스들의 임계구역 진입이 허용되는 횟수에 상한이 있어야 한다.

Mutex Locks

  • Critical Section 문제를 운영체제에서 해결한다!

  • acquire(), release()를 통해 대기 지원

  • Busy Waiting을 요구

  • Mutex Lock의 정의

메모리 관리 전략

  • 세그먼테이션 : 프로세스 메모리를 사용자 관점에서 분할한 가변적 단위 ex) 메인 프로그램, 심볼 테이블, 지역변수…
  • 페이징 : 논리적인 프로세스 공간을 페이지라는 단위로 나누어서 물리적인 공간의 프레임에 적재 (CPU가 페이지를 참조해서 프로세스의 데이터를 가져온다!!)

가상 메모리

  • 실제 메모리의 크기에 관계 없이 프로그램이 가상의 큰 메모리 공간 사용 (요구 페이징 형태의 가상 메모리)

  • Memory-mapped file : 디스크 블록을 메모리의 한 페이지로 사상시킨다 (File I/O를 일반 메모리 접근으로 대신 처리)



Operating System Share Tweet +1