[OS] Chapter 1-2. Introduction & O/S Structures

지코·2025년 4월 29일

OperatingSystem

목록 보기
1/4
post-thumbnail

2년 전쯤 수강하다가 말았던 운영체제 공룡책 강의 를 다시 수강하면서 정리해보려고 한다. 아마 정리하면서 이해되지 않는 부분들은 추가적으로 깊게 공부할 것 같다!

🤔 목표는?
1. depth가 깊은 기술 면접에 대비하기
2. 컴퓨터 구조와 운영체제 지식을 잘 정리해서, 내 지식으로 만들기

📌 운영체제 (Operating System)

  • 컴퓨터 위에서 항상 실행되는 프로그램. 컴퓨터 시스템을 운영하는 소프트웨어.
  • 응용 프로그램에 시스템 서비스를 제공.
  • 프로세스, 리소스, 사용자 인터페이스 등을 관리.
  • 응용 프로그램과 하드 웨어 사이에서 중계자 역할.
  • OS의 핵심인 kernel에서 시스템 프로그램과 어플리케이션 프로그램에 대한 인터페이스를 제공한다.
💡 컴퓨터 시스템을 운영하고 소프트웨어적으로 구현한다❗️

📌 폰 노이만 구조 (ISA: Instruction Set Architecture)

  • 폰 노이만이라는 사람이 제시한 프로그램 저장 방식
  • 메모리(RAM) 내부에 프로그램을 저장.
  • 현재 컴퓨터의 기반이 되는 구조가 되었다.
1️⃣ 사용할 프로그램이나 명령어를 메모리에서 fetchIR(Instruction Register)에 저장한다.
2️⃣ 그 후 명령어는 디코딩되어 메모리에서 피연산자(처리될 데이터 그 자체)를 가져올 수 있다. 그리고 내부 레지스터(Internal Register)에 저장된다.
3️⃣ 피연산자들에게서 명령어가 execute 된 이후에 결과는 다시 메모리에 저장된다.
💡 이 때 프로그램이란 ? ➡️ 명령어들의 집합 (= a set of instructions)

📌 컴퓨터 시스템의 구성 요소

💡 컴파일러, 어셈블러, 텍스트 에디터, 데이터베이스 시스템 등의 어떠한 형태든, 사용자가 응용 프로그램을 이용할 때 운영 체제가 사용자에게 서비스를 제공한다.

1️⃣ 하드 웨어 (the hardware)

2️⃣ 운영 체제 (the operating system)

3️⃣ 응용 프로그램 (the application programs)

4️⃣ 사용자 (a user)


📌 컴퓨터 시스템의 구성

클래식한 컴퓨터 시스템

  • 한 개 이상의 CPU와 많은 device controller들이 bus를 통해 연결되어 있다.

부트스트랩(bootstrap) 프로그램이란 ?

  • 컴퓨터에 전력이 들어오자마자 제일 먼저 실행되는 프로그램
  • 컴퓨터가 부팅되면 디스크에 저장되어 있던 운영체제를 메모리에 로드(load)한다.

📌 Interrupts

  • CPU process와 I/O device(hardware)가 통신하는 방법 중 하나
  • 하드웨어는 언제나 system bus를 통해 interrupt를 trigger시킬 수 있고, CPU에 신호를 보낸다.

📌 저장 공간의 계층 구조

  • 용량(storage capacity)접근 속도(access time)에 따라 위와 같은 계층 구조가 형성된다.
  • 위로 갈수록 접근 속도가 빠르지만, 저장 용량이 작다.
  • 메인 메모리(Main memory)는 보통 우리가 아는 RAM을 말한다.
  • hard disk는 HDD이며, 마그네틱 카드 자기장을 이용한다.
  • solid-state disk는 SSD를 말하며, 메모리 형태의 하드디스크이다.

📌 I/O Structure

💡 DMA (Directed Memory Access)란 ?

  • CPU가 관여하지 않아도 될 때, 하드웨어 장치가 메모리에 직접 접근한다.
  • CPU가 해야 할 주변 장치들 간의 전송을 DMA 장치가 대신 한다. ➡️ CPU의 효율을 향상시킨다.

📌 컴퓨터 시스템의 구조

💡 CPU : 명령어를 실행하는 하드웨어
💡 Processor : 한 개 이상의 CPU를 포함하는 물리적 칩
💡 Core : CPU의 후면 계산 장치, CPU의 각종 연산을 수행하는 핵심 요소
💡 Multicore : 한 CPU에 여러 개의 컴퓨팅 코어를 포함하는 것
💡 Multiprocessor : 여러 개의 프로세서를 포함하는 것

대칭형 다중 처리 (Symmetric Multiprocessing, SMP)

: 각각의 CPU 프로세서가 모든 작업들을 수행하는 가장 일반적인 다중 프로세서 시스템이다.

멀티 코어 설계 (Multicore Design)

: 여러 개의 CPU를 연결하는 것은 비용적으로 부담이 되므로, CPU 내의 core들을 연결하자❗️
: 같은 하나의 프로세서 칩 안에 여러 개의 코어들이 포함된다.

📌 운영체제 연산들

멀티 프로그래밍 (Multiprogramming)

: 메모리에 여러 개의 프로그램들을 적재해두고, CPU에서 하나의 프로그램이 대기 중일 때 다른 프로그램을 수행시켜 CPU의 사용 효율을 극대화한다.

멀티 태스킹(Multitasking) = 멀티 프로세싱(Multiprocessing)

  • 멀티프로그래밍의 논리적인 확장
  • 여러 개의 프로그램들을 동시에 띄워두고 실행할 수 있게 한다.
  • CPU가 작업들을 최대한 빠르게 switch할 수 있게 해준다.
    ➡️ 실제로는 동시에 여러 프로그램을 사용하는 것처럼 사용자가 느낄 수 있게 CPU가 빠르게 수행되는 것이다❗️
  • 프로그램이 running중일 때 각각의 작업들이 상호작용할 수 있게 해준다.

CPU 스케줄링 (CPU Scheduling)

  • 여러 개의 프로세스들이 동시에 실행될 준비가 되어 있을 때, 다음에 어떤 프로세스를 실행시킬지 시스템이 선택하는 것.
  • CPU 효율을 가장 높일 수 있는 프로세스를 선택하는 것이 중요 🌟

📌 가상화 (Virtualization)

  • 한 컴퓨터의 하드웨어를 여러 개의 다른 실행 환경으로 추상화할 수 있도록 하는 기술.
  • VMM (Virtual Machine Manager)

📌 운영체제 서비스들

운영체제는 프로그램의 실행을 위한 환경을 제공한다.

  • UI(User Interface)
  • 프로그램 실행
  • 입출력 연산
  • 파일 시스템 조정
  • 통신(Communications)
  • 에러 감지
  • 자원 할당(Resource allocation)
  • 로깅(Logging)
  • Protection and security

Reference

🦖 운영체제 공룡책 강의

profile
꾸준함이 무기

1개의 댓글

comment-user-thumbnail
2025년 5월 6일

좋은 내용 잘 읽었습니다! 컴퓨터 시스템의 구조에 대해 완전 잊고 있었는데, 포스팅을 계기로 복습할 수 있어서 좋았습니다 ☺️

답글 달기