운영체제 1 개요

milkbottle·2022년 11월 29일
0

OS

목록 보기
1/15
post-thumbnail

운영체제 개요

컴퓨터

컴퓨터의 정의

CPU + Memory를 기반으로 SW를 구동할 수 있는 장치

컴퓨터의 분류

  • Personal Computer: 사용자가 사용하고 싶은 입맛대로 구동할 수 있는 컴퓨터 ex) 랩탑, 데탑
  • Server Computer: PC에서 성능을 엄청 좋게 만든 컴퓨터 ex) 기상청 컴퓨터, 알파고
  • Embedded Computer: SW가 실행되는 환경에 딱 맞도록 설계된 컴퓨터. 그래서 하드웨어 사양을 딱
    맞게 설계를 했으므로 다른 SW를 구동할 수 없음. ex) 테슬라 자동차, 스마트냉장고

컴퓨터의 시스템 요소

  • user: 옛날에는 사용자 한 명을 지칭했으나, 요즘은 컴퓨터가 가벼워지고 좋아짐으로써 user 대신 프로그램이라고 생각하기도 함
  • system and application program: 위 설명과 동일한 내용이지만 요즘은 user와 같다고 생각함
  • operating system(운영체제): 프로그램 중 필요한 내부동작(메모리에서 데이터를 뽑아와 CPU로 전달, 어떠한 instruction이 지시한대로 CPU의 ALU가 연산하는 행동 등)들을 해석함
  • computer hardware: CPU, Memory, I/O장치

    추신
    프론트개발자(user라인), 백엔드개발자(system and application program라인), 시스템개발자(operating system라인)으로 분류하기도 함

최신 컴퓨터 구조

  • System Controller: 속도가 생명이므로 대역폭이 빠른 하드웨어 ex) 그래픽카드, 메모리, PCI
  • Peripheral Bus Controller: 속도가 느려도되는 주변장치를 통제 ex) LAN, SCSI, USB, BIOS, EIDE

    추신

    • PCI: 메인보드에 주변장치를 장착하기 위한 버스 규격
    • SCSI: 컴퓨터에 주변장치를 직렬 연결하기 위한 표준
    • EIDE: 하드디스크 인터페이스

컴퓨터 구조

CPU의 구조

  • Arithmetic Logical Unit(ALU): 산술연산(+-*/), 비트연산(and or not)처리
  • Control Unit(CU): if else goto return 처리
  • Memory Management Unit(MMU): CPU가 메모리에 접근하는 것을 관리
  • Program Counter(PC): 다음에 수행되어야 할 명령어의 주소를 저장하는 레지스터
  • Instruction Registor(IR): PC에서 명령어를 호출해 해석하기 전에 잠시 저장하는 레지스터
  • Stack Pointer(SP): 프로세스를 스택형식으로 관리하는데 이 스택의 주소를 저장하는 레지스터
  • Program Status Word(PSW): 프로세스의 상태를 저장하는 레지스터
  • 범용 레지스터: 위의 정보 외에도 프로세스의 변수와 기타 정보들을 저장하는 레지스터
  • I/O 장치, Memory: 마우스, 키보드, 프린터, 메모리, SSD 등
  • Bus: 이 장치들을 이어주는 매개체

    추신 스택의 구조

    • input parameter 영역(함수가 끝나면 이 공간은 재할당됨)
    • main함수의 data영역(main함수의 변수들을 저장)
    • const영역(상수나 static fiinal 이런 변수)
    • code segment 영역(CPU가 이해하는 명령어 덩어리)

    먼저 프로그램을 실행해서 어셈블리어로 const
    와 code segment 영역을 채워넣고, const위의 영역인 main함수의 주소를 쌓아올려서 프로그램이 동작함

폰 누이만 아키텍처

  • 크게 CPU - Memory 두 가지 분류로 나뉜 구조
  • 다른 아키텍쳐로는 하버드 아키텍쳐
    Instruction Memory – CPU – Data Memory 세 가지 분류로 나뉜 구조

Instuction

  • Arithmetic instructions: 더하기, 빼기, 곱하기, 나누기 등 산술연산 (ALU의 역할)
  • Logical instructions: and, xor, or 등 비트연산 (ALU의 역할)
  • Control flow instructions: goto, if, else, call, return 등 제어연산(CU의 역할)
  • Data instructions: load, store, move 등 I/O 디바이스의 명령

Linux의 부팅과정

  1. CPU가 스스로 동작을 잘하는지 테스트를 위해 초기화 후 0xfffffff0 주소의 instruction실행
  2. 0xfffffff0에 해당하는 BIOS/UEFI가 실행됨 (BIOS/UEFI는 ROM이라 전원이 꺼져도 날아가지 않음)
  3. BIOS/UEFI가 usb나 키보드, 마우스 등의 장치가 동작이 잘되는지 점검
  4. BIOS/UEFI가 부트로더보고 일해라고 건드림 (리눅스 기준 LILO/GRUB라는 부트로더가 있음)
  5. 부트로더를 통해 CPU의 권한을 운영체제로 넘겨서 부팅이 됨

CPU의 전반적인 내용

IDLE Process

  • 운영체제가 부팅되고 나서 최초로 실행되는 프로세스
  • while(1) {doNothing(); busy waiting(아무것도 안하는데 무언가를 계속함)
  • 위를 통해 CPU는 항상 100%돌아가는데 IDLE Process가 얼마나 작동하는지 확인해서 점유율 체크

Complex Instruction Set Computer(CISC)

  • 기존의 instruction은 더하기, 빼기, 읽기, 쓰기 등 단순
  • 사용자들의 입맛대로 Complex한 명령이 추가
  • 하지만 전력소모↑ 많이 안쓰는 기능으로 불편해져서 RISC가 탄생

Reduced Instruction Set Computer(RISC)

  • 기존의 instruction으로 성능을 더 좋고 빠르게 한 컴퓨터
  • Pipeline 개념의 도입으로 CISC > RISC로 전환

Pipeline

  • RISC의 설계방법의 대표적인 예
  • 각 기능을 병렬적으로 나눠서하므로 최대 4배만큼의 성능 향상
  • 하지만 instruction마다 excution time이 상이
  • 먼저 수행해야 할 instruction이 다음 instruction의
    정보를 필요할 경우(종속성 문제)를 고려하면 항상 4배가 되는 것은 아님
    • Fetch: PC(Program Counter)의 주소를 가져옴
    • Decode: 그 주소의 instruction을 해석
    • Execution: 가져온 주소의 instruction을 실행
    • write back: 결과 도출

Instruction Level Parrellelism(ILP)

  • Superscalar: CPU가 동시 수행가능한 instruction을 구분해서 처리
  • VLIW: 컴파일 타임에 분석해 동시에 처리
  • Simultaneous Multithreading: 물리적으로 쓰레드를 늘림
  • Multi-Core: 물리적으로 코어수를 늘림
  • SMP Architecture: 두 개 이상의 CPU가 하나의 메모리를 공유함
    ex) 제온같은 서버컴퓨터
  • NUMA Architecture: CPU-Memory를 연결한 컴퓨터가 여러대로 공유
    ex) 슈퍼컴퓨터
  • Clustered System Architecture: 하나의 저장소에 여러 CPU-Memory가 달림
    ex) PC방 중앙하드

I/O operation

  • Direct I/O: CPU가 I/O 장치 주소가 저장된 레지스터를 통해 직접 명령
  • Memory Mapped I/O: 메모리에 매핑된 I/O 장치 주소에 명령
    CPU가 I/O 장치를 다루긴 너무 비싼자원이라 I/O 컨트롤러가 CPU대신 I/O 장치를 제어함
  • Programmed I/O: 키보드나 마우스 정보는 데이터가 크지 않아서 CPU에서 바로 처리
  • Direct Memory Access: CPU를 거치지 않고 디스크에서 메모리로 처리
    ex) 영상, 음악 파일
  • interrupt: I/O 장치가 행동을 완료하면 CPU에게 다했다고 break를 걸음
  • polling: 특정주기를 가지고 CPU가 I/O 장치에게 “야 다했냐?”라고 계속 물어보는 것
  • Synchronous(Blocking): 명령을 실행하고 수행될 때 까지 기다리고 다하면 다음 행동을 함
  • Asynchronous(Non-blocking): 명령을 실행하고 다른 행동을 할 수 있음

예외 처리

  • Interrupt: 프로세서의 외부에서 발생된 이벤트
    ex) I/O 인터럽트, 클럭 인터럽트
  • Trap: 소프트웨어(내부) 인터럽트로 사용자가 의도적으로 발생시킴
    ex) system call
  • Fault: 사용자의 의도가 아닌 문제로 발생하는 이벤트로 처리 후 다시 돌아감
    ex) 0으로 나누는 행위
  • Abort: Fault와는 다르게 복구할 수 없는 예외로 process kill함으로써 해결

DMA Transfer 과정

  1. CPU가 DMA Controller를 초기화
  2. I/O 장치가 DMA Controller에게 “너를 사용해도 되냐?” 요청
  3. DMA Controller가 CPU에게 “BUS(데이터의 통로)를 사용해도 되겠냐?” 요청
  4. CPU가 “BUS 쓰셈 ㅇㅇ”이라고 응낙
  5. DMA Controller가 “ㅇㅇ 감히 내가 움직여주마”라고 응낙
  6. I/O 장치가 Memory에게 자료 전송
  7. DMA Controller가 CPU에게 “이제 할 일 다했음!! CPU님 봐주셈”이라고 인터럽트

저장매체 계층

  • 레지스터 > 캐시 > 메인메모리(RAM) > SSD > HDD > Optical Disk(cd, dvd) > Magnetic tape
  • Read Only Memory(ROM): 한번 쓰고 전원꺼져도 유지(비휘발성)
  • Random Access Memory(RAM): 반영구적, 전원꺼지면 날아감(비휘발성)
  • Static RAM(SRAM): 비싼 소재를 써서 전기를 넣어주면 빠르게 잘 돌아감
  • Dynamic RAM(DRAM): 싼 소재를 써서 주기적으로 축전기에 전기신호를 넣어서 새로고침해서 느림
  • 캐싱: 중요하고 다시 쓸 확률이 높은 데이터를 높은 계층으로 배치
  • Cache Coherency: 하나의 공유 메모리에서 여러 클라이언트의 캐시에 저장된 데이터의 일관성
    • Write-Through: Coherency가 어긋나면 바로바로 갱신
    • Write-Back: Coherency가 어긋나면 어느 정도 미루다가 중요해질 때 처리

HDD 구조

  • 플래터: HDD의 데이터가 저장된 가장 큰 원판
  • 트랙: 하나의 플래터에 여러 트랙이 있는데 이 안에 데이터가 저장됨
  • 섹터: 트랙을 여러개로 나눈 구역. 데이터를 저장할 수 있는 제일 작은 부분
  • 실린더: 위로 겹친 플래터에서 위에서 봤을 때 같은 위치의 트랙에 있으면(실린더면) 빠르게 읽음5. 암: 플래터의 데이터를 읽는 팔
  • 헤드: 암에 달려있는 플래터와 접해있는 대가리

    추신
    같은 실린더의 경로에 데이터가 있으면 암이 움직이지 않고 한꺼번에 데이터를 읽을 수 있다. 그래서 HDD에서 큰 파일을 저장하면 한 플래터의 여러 트랙에 저장하는 것이 아니라, 암이 최소한으로 움직이도록(arm seek time을 줄이는 것이 HDD 속도의 관건) 실린더의 경로상에 여러 층의 플래터에 데이터를 분할해서 저장한다.

    이렇게 실린더에 데이터를 분배하는 것이 디스크 조각모음

SSD 구조

  • Controller: 플래시 메모리의 어느 곳에 데이터를 저장할지 결정
  • Flash Memory: 실질적 저장 공간으로 그 안에는 블록(HDD로 치면 섹터)이 존재

Dual Mode

  1. 프로그램에서 I/O 장치를 사용해야하는 파일 읽기 기능인 System Call을 하면
  2. 운영체제가 interrupt로 멈춰버리고 kernel mode로 들어가서 I/O 장치를 사용해 파일을 읽음
  3. 파일을 다 읽으면 프로그램으로 전달하며 다시 권한이 없는 user mode로 복귀

Dual Mode의 주목적

Protection
OS가 user mode에서 마음대로 자원에 접근하지 못하도록 kernel mode에서만 접근할 수 있도록 보호

Hardware Protection

  • CPU Protection: 일정주기로 CPU에게 스스로 인터럽트를 걸 수 있는 소자가 있음
    ex) timer interrupt
  • Memory Protection: 메모리 주소에 잘못 접근하는 프로세스를 죽임
    ex) process kill
  • I/O Protection: 권한이 있어야 I/O 장치를 다룰 수 있도록 보호
    ex) 커널모드일 때만 접근 가능

    OS가 권한을 가지는 경우

    • 부팅될 때
    • 시스템 콜로 인해 커널 모드로 갈 때
    • 인터럽트가 발생할 때

컴퓨터의 역사

1세대 컴퓨터(1945~1955)

  • 진공관과 수많은 플러그보드
  • 운영체제도 프로그래밍 언어도 어셈블리 언어도 없는 단순한 계산기
  • 폰 누이만의 애니악

2세대 컴퓨터(1955~1965)

Batch System: 프로그램의 흐름에 따라 순차적으로 프로세스를 처리

3세대 컴퓨터(1965~1980)

  • Multiprogramming System: Batch에서 한 단계 더 나아가 여러 프로세스가 실행됨
  • Time-sharing System: 컴퓨터는 하나의 프로세스만 실행하는게 아니라 마치 여러 프로세스들이 동시에 동작하는 것처럼 왔다갔다하면서 프로세스를 실행함

4세대 컴퓨터(1980~)

  • 초밀도 집적회로(VLSI)의 등장으로 성능을 3세대에서 극대화
  • 현대의 Personal Computer의 등장

컴퓨팅 환경

Traditional Computing

  • Batch System
  • Multiprogramming System
  • Time-sharing System

Mobile Computing

손에 들고 다녀야 하므로 제한된 CPU, Memory의 성능과 작은 스크린이 필요

Real-time embedded Computing

  • Hard real-time: 명령을 제한시간 안에 무조건 수행 ex) 원전, 비행기, 우주선의 컴퓨터
  • Soft real-time: 명령을 너무늦지않게만 수행 ex) 유튜브 버퍼링, 수많은 프로그램들

Client-Server Computing(주종관계)

  • 하나의 데이터 센터로 모든 것들을 모아 서버를 운영
  • Clustered Server를 통해 중앙제어식으로 운영

Peer-to-Peer Computing(동등관계)

같은 계층끼리의 통신: 인터넷상의 IP 통신, 스타크래프트 UDP 통신

Cloud Computing

  • Infrastructure as a Service(IaaS): 네트워크와 저장공간 및 서버인 물리적 자원을 제공
  • Platform as a Service(PaaS): IaaS에서 운영체제와 미들웨어까지 제공 ex) GCP, AWS
  • Software as a Service(SaaS): 데이터와 애플리케이션까지도 제공
  • 가상화: 서버가 차지하는 공간에 따라 실시간으로 필요한 자원을 조절 가능

운영체제의 역사

  1. 벨 연구소의 UNIX(1969)
  2. 버클리 연구소의 BSD(1977)
  3. 벨 연구소에서 XENIX로 발전(1980)
  4. 오라클의 SunOS(1984) -> 추후 Solaris(1992)
  5. 스티브잡스가 인수한 NeXT사의 Step(1989)

0개의 댓글

관련 채용 정보