운영체제 #1

2024. 10. 28. 22:25·복습/운영체제

1. Computer System Structrue

Computer System

컴퓨터 시스템은 4개로 나뉘어진다

1. 하드웨어 ex) CPU,memory,I/O장치

2. 운영체제 - 하드웨어 제어

3. 시스템/응용 프로그램

4. 사용자

 

Operating System

운영체제란, 사용자-프로그램 간 혹은 프로그램-프로그램 간 매개체 역할을 하는 또 하나의 프로그램이다.

 

1.1 What is an Operating System?

운영체제의 목적은 두 가지이다.

1. 컴퓨터 시스템을 사용하기 편하도록 한다

2. 자원을 효율적으로 사용할 수 있도록 한다(HW 성능 최적화) - 운영체제는 자원을 할당하는 역할을 맡고있다. 예를 들어 두 개의 프로그램이 동시에 하나의 자원에 접근할 때 어떤 프로그램이 자원을 가져가야 더 효율적인지 같은 문제 상황을 해결한다.

 

1.2 Operating System Definition

사실 운영체제에 대한 명확한 정의는 없다.

넓은 의미에서 운영체제란,실행하는 모든 프로그램을 뜻한다

좁은 의미에서 운영체제란,컴퓨터가 실행될 때 항상 돌아가는 프로그램을 뜻한다. - 커널이라고 알려져있다. 프로그램은 커널 혹은 시스템 프로그램으로 나뉜다. 

 

2.1 Bootstrap Program

Bootstrap Program이란 무엇일까?

이 프로그램은 컴퓨터 실행 시 가장 먼저 실행되는 프로그램이며 ROM이라는 읽기 전용 메모리에 존재한다.

ROM은 전원을 꺼도 내용이 지워지지 않는 비휘발성 메모리이다.

 (ROM - read only memory)

 

운영체제는 언제 실행될까?

컴퓨터의 전원을 켜면 Bootstrap Program이 가장 먼저 실행되어 컴퓨터 시스템을 초기화한다.

시스템 초기화 후 디스크에 있던 운영체제가 메모리로 load 되고 이후 CPU가 운영체제를 실행한다.

 

2.2 Use of Interrupt

운영체제는 interrupt에 의해서 실행된다. 즉,운영체제를 따로 호출할 필요가 없다는 뜻이다.

interrupt란 상황을 나타내는 전기적 신호이다. interrupt가 발생하면 자동으로 관련된 이벤트 함수가 호출된다.

 

OS의 interrupt 실행 순서를 알아보자

1. interrupt 발생

2. 기존 PC(program counter)에 저장되어 있던 명령어 주소를 운영체제 내에 저장한다

3. PC에 발생한 interrupt에 해당하는 ISR(interrupt 종류별로 생성된 interrupt 처리 함수)의 주소를 저장한다.

-> 만약 현재 처리중인 interrupt보다 낮은 우선순위를 가진 interrupt가 발생하면 무시할 수 있다.

4. 만약 ISR의 실행이 끝났다면, 운영체제에 저장했던 명령어 주소를 다시 불러와 PC에 저장한다.

 

운영체제 내의 구조 : 저 표가 interrupt vector이다. 실제로는 함수가 아닌 함수(ISR)의 메모리 주소가 저장되어 있다.

이때 interrupt 의 주소는 interrupt vector 라는 행렬에 저장되어 있다. interrupt | interrupt의 주소 꼴로 저장되어 있음

 

trap/exception은 sw 기반의 interrupt이다.

ex) 숫자를 0으로 나눈 경우 / 응용프로그램이 system call 을 할 경우

 

2.3 I/O Structure

Device driver와 Device controller

Device controller란 특정 device를 제어하는 동시에 device와 local buffer (controller)간의 data 이동(I/O)을 책임지는 hw이다. 일종의 작은 CPU라고 생각하면 된다. I/O가 끝났을 경우 Interrupt로 CPU에 그 사실을 알리는 역할도 하고 있다.

Device driver란 Device Controller를 제어하는 sw이다. driver는 각 controller마다 존재하며 응용 프로그램의 사용자가 일정한 interface를 가질 수 있도록 기능한다. 

 

(이해가 안될 때,참고하면 좋을 글)https://rebugs.tistory.com/305

 

[컴퓨터 구조] 입출력 장치(장치 컨트롤러와 장치 드라이버)

이 글은 혼자 공부하는 컴퓨터 구조 + 운영체제 (저자 : 강민철)의 책과 유튜브 영상을 참고하여 개인적으로 정리하는 글임을 알립니다. 입출력장치는 모니터, 키보드 스피커 마우스뿐만 아니라

rebugs.tistory.com

 

Direct Memory Access (DMA)

기존에는 controller 내부의 local buffer에 있는 data를 main memory로 load하려면 반드시 CPU를 거쳐야했다. 하지만 CPU는 os 실행보다 사용자의 프로그램을 실행하는 것이 목적인 장치이기 때문에,이런 경우 CPU가 이 상황에만 묶여있게 되어 프로그램 실행이 어려워진다.

그래서 data 전송 중 CPU가 개입하는 것 대신 controller가 main memeory에 직접 data를 전달하는 방법인 DMA가 탄생했다.

controller는 블럭 단위로 data를 전송하므로 속도가 굉장히 빠르다.

 

Cycle Stealing

 

Cycle Stealing

이때 I/O device와 CPU가 동시에 Memory에 접근하는 경우가 생길 수 있다. 이러한 경우에는 Cycle Stealing이라는 방법을 사용한다. Cycle Stealing이란 이전 장치가 memory 접근을 끝낼때까지 기다렸다 memory에 접근하는 것이다. 이 방법을 사용하게 된다면 CPU가 memory에 접근하는 시간이 조금 늦춰질 순 있으나 기존 방법보다 훨씬 빠르고 효과적인 방법이다.

 

data 전달이 느린 장치의 경우 CPU를 통해서/빠른 장치의 경우 DMA를 통해서 data를 전달한다. 

 

2.4 Storage Structure

Caching

Caching이란 일시적으로 느린 장치에서 빠른 장치로 data를 copy하는 작업이다. 이 방법을 사용할 경우 data를 빠르게 불러올 수 있다는 장점이 있다. 실제로 CPU는 main memory에서 직접 명령어를 가져오는 것이 아니라 cache라는 저장장치에 저장해서 명령어를 가져온다.

 

3. Computer System Architecture

1. Single Processor System

하나의 CPU를 가지고 있다.

 

2.Multi Processor System => Tightly Coupled System

생산성 증가 : 여러 개의 CPU를 가지고 있다. 

신뢰도 증가 :

Fault tolerant system  - 하나의 CPU에 장애가 발생해도 프로그램에 문제가 없다

Graceful degradation  - 점진적으로 성능이 저하된다

비용 절감 : 여러 개의 컴퓨터를 실행시키는 것보다 여러 CPU를 가진 컴퓨터 하나를 실행시키는 것이 더 값이 싸다. (메모리와 I/O 장치를 공유하기때문에) 

 

2-1. 대칭형 (SMP)

상황에 따라서 CPU의 역할을 유연하게 나눈다.

 

2-2. 비대칭형

하나의 특정 CPU를 master로 지정하고 나머지 CPU는 slave로 지정한다. 이를 통해 master CPU는 운영체제를 관리(작업 할당)하는 역할만 수행하고 나머지는 해당 작업을 처리하는 역할만 수행한다.

 

3. Clustered System  => Loosely Coupled System

생산성 증가 : 여러 개의 독립된 컴퓨터가 network로 연결되어 있어 마치 하나의 컴퓨터처럼 작동한다.

신뢰도 증가 :

Fault tolerant system  - 하나의컴퓨터에 장애가 발생해도 프로그램에 문제가 없다

Graceful degradation  - 점진적으로 성능이 저하된다

SAN(Storage-Area Network) : 각각의 컴퓨터가 하나의 보조기억 장치를 공유한다.

4. Operating System Structure

1. Batch System

메인 메모리에는 프로그램 하나만 저장되므로 CPU가 계속 일을 처리하지 않는다.

2. Multiprogrammed System

메인 메모리에 여러 개의 프로그램이 저장되므로 메모리 관리가 복잡한다. -> job scheduling: 누구에게 CPU를 줘야하는가 하나의 프로그램이 I/O를 하는 동안 다른 프로그램을 메모리에 저장한다.

3. Time Sharing System

Multiprogrammed System에서 하나의 프로그램이 CPU를 장악하는 걸 방지하기 위해 고안되었다.

메인 메모리에 여러 개의 프로그램이 저장되므로 메모리 관리가 복잡한다. -> CPU scheduling: 누구에게 CPU를 줘야하는가

CPU는 일정시간동안 하나의 프로그램을 처리한다.

프로그램이 많아질수록 CPU가 프로그램에 돌아오는(프로그램을 처리하는) 주기가 길어지므로 사용자 입장에서는 처리 속도가 느리다고 느껴질 수도 있다.  -> 대화형 시스템(interactive system)은 응답시간이 중요하므로 응답시간은 1초보다 작아야한다

만약 모든 program이 I/O를 하고 있어서 CPU가 아무것도하고 있지 않는다면? -> memoty에 더 많은 program을 load 시켜 CPU에 할 일을 준다.

만약 memory에 program을 load시키지 못하는 경우(용량이 커서) 가상 메모리를 사용한다. -> 실제 메모리보다 훨씬 큰 메모리가 있는 것처럼 보이게끔 메모리를 운영하는 방

 

5. Operating-System Operations

CPU의 모드는 두 개이다.

User mode(1) / Kernel mode(0)

CPU가 현재 어떤 모드로 작동하는지 mode bit를 통해 privileged instruction을 실행할 수 있는 권한을 부여한다.

5.1 Timer

Time Sharing System에서 사용되는 timer는 kernel mode에서만 작동한다.

5.2 Transition from User to Kernel Mode

system call을 처리할때는 modie bit =0 -> 처리한 후에는 mode bit=1 로 변경된다.

 

6. Computing Environments

▪ Client-Server Computing : dumb 터미널이 PC로 바뀌면서 등장함 (연결된 PC는 클라이언트 담당, 메인 컴퓨터는 서버 담당)

▪ Peer-to-Peer (P2P) Computing : 클라이언트/서버 담당 PC를 구분하지 않음

Virtualization : 소프트웨어적으로 컴퓨터 하드웨어인 것처럼 흉내. ex)VMware/JVM

▪ Clouding Computing : EC2 언급

▪ Real-Time System : 요청을 실시간으로 처리할 것을 보장함 ex)미사일 감지 및 방어 시스템

▪ Embedded System : 다른 시스템에 내장된 computer. 필요한 최소한의(제한된 기능만 가지고 있음)

'복습 > 운영체제' 카테고리의 다른 글

운영체제 #3 프로세스  (2) 2024.11.11
운영체제 #2 구조  (2) 2024.11.04
'복습/운영체제' 카테고리의 다른 글
  • 운영체제 #3 프로세스
  • 운영체제 #2 구조
hyeumm.dev
hyeumm.dev
말하는 감자입니다. 많이 응원해주세요..^^
  • hyeumm.dev
    천방지축 개발자 되기 프로젝트
    hyeumm.dev
  • 전체
    오늘
    어제
    • 아무개 (78)
      • 복습 (41)
        • 알고리즘 (3)
        • 소프트웨어디자인패턴 (8)
        • 네트워크 (3)
        • 자료구조 (1)
        • C++ (1)
        • 서구실 (6)
        • 멋쟁이사자처럼 (3)
        • SOPT (7)
        • 소분설 (6)
        • 운영체제 (3)
      • 회고 (2)
        • UMC (0)
      • 프로그래밍 (19)
        • 안드로이드 (15)
        • 백준 (0)
        • 파이썬 기초 (0)
        • kotlin in action (3)
        • 테스트 코드 (1)
      • 디자인 (7)
      • 기획 (3)
        • 서비스 리뷰 (1)
        • IT 알쓸신잡 (2)
      • 대외활동 (5)
        • 네이버 클라우드 캠프 (5)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    IT동아리
    #네이버클라우드캠프
    솝트
    멋쟁이사자처럼
    네클캠
    네이버클라우드
    sopt
    4호선톤
    네이버클라우드캠프서포터즈
    해커톤
    비트캠프강남
    네이버클라우드캠프
    PM
    hyperclovax
    발대식
    KDT
    ncamp서포터즈
    에이아이팜
    서류
    국비교육
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
hyeumm.dev
운영체제 #1
상단으로

티스토리툴바