사망년/운영체제

chapter 1: Introduction (1)

stop-zero 2023. 9. 10. 19:23
70페이지의 거창한 pdf를 본 내 눈은 거친 생각과... 불안한 눈빛과
진도를 다 나가지 못해 다음 주에 이어서 수업하는 게 더 두렵다. 

https://parksb.github.io/article/5.html#what-operating-systems-do

 

운영체제란

운영체제는 계속 발전되고 있기에 공인된 정의는 없지만, 컴퓨터와 컴퓨터 사용자 간이 중재자 역할을 하는 프로그램이다. 운영체제는 짠돌이라서 짧은 시간 안에 효율적으로 일한다. 운영체제가 없으면 직접 기록해야 하는 일이 생긴다. 운영체제의 실체는 커널(Kernel)이다. 모든 커널과 커널 모듈로 구성되어있고, 같은 커널이라면 같은 운영체제로 취급한다. 

컴퓨터 시스템은 하드웨어(CPU, Memory, I/O devices 등), 운영체제(Operationg System), 응용(Application) 프로그램, 사용자로 구분된다.  운영체제는 보는 관점에 따라 달라진다. 자원 할당자(resource allocator)와 제어 프로그램(control program)으로 나눠볼 수 있다.

 

자원 할당자(Resource allocator)

사용자는 컴퓨터 앞에 앉아 키보드와 마우스를 조작한다. 이때 운영체제는 사용자가 컴퓨터 자원 사용을 신경 쓰지 않으면서 컴퓨터를 사용하도록 만든다. 컴퓨터의 자원을 여러 사용자가 나눠 쓰게 되는 경우에, 운영체제는 자원의 공정하고 효율적인 사용을 위해 상충하는 요청을 조정한다.

제어 프로그램(Control program)

시스템에게 운영체제는 자원 할당자이다. CPU 시간, 메모리 공간, 파일 저장소 공간, 입출력 장치 등 다양한 문제를 해결해야 하는데 이런 자원들을 관리하는 제어 프로그램으로서 동작한다. 

 

컴퓨터 시작(Computer Startup)

컴퓨터가 작동되는 과정을 알고 넘어가야 한다. 컴퓨터를 켜면 부트스트랩 프로그램(Bootstrap program)이라는 초기화 프로그램이 실행된다. 보통 ROM(Read-Only Memory)나 EPROM(Erasable PROM)에 저장되는 펌웨어(Firmware)라고 부른다. 부트스트랩 프로그램은 시스템의 모든 장치를 초기화하고 부트로더(Boot loader)를 실행한다. 최종적으로 부트로더는 최종적으로 운영체제를 실행한다. 

 

컴퓨터 시스템 동작(Computer-system operation)

한 개 또는 그 이상의 CPU와 장치제어기가, 공유 메모리에 접근할 수 있는 공통 버스를 통해 연결되어 있다. 메모리 사이클을 얻기 위해 경쟁하는 CPU와 디바이스가 동시에 실행한다. CPU는 주저장장치와 장치제어기의 지역 버퍼 간에 자료 이송을 하고, 입출력은 입출력 장치와 장치 제어기의 지역 버터 간의 자료를 이송한다. 

입출력 장치와 CPU는 동시에 실행히 가능하다. 장치제어기는 지역 버퍼를 가지고 있고, 해당 장치를 관리한다. 또한 장치 제어기는 CPU에게 이벤트 발생을 알려주는데, 이를 인터럽트(Interrupt)라고 부른다. 보통 컴퓨터는 여러 작업을 동시에 처리하는데, 이때 당장 처리해야 하는 일이 생기면 기존의 작업을 잠시 중단하고 인터럽트 신호를 보낸다. 그러면 커널은 작업을 멈추고 인터럽트를 처리한 후 기존 작업으로 돌아온다. 

 

인터럽트의 공통 기능 

운영체제는  인터럽트 기반으로 동작한다. 예를 들어 CPU가 인터럽트 신호를 받으면 잠시 작업을 멈추고 메모리의 고정된 위치(=인터럽트 벡터)를 찾는다. 인터럽트 벡터(Interrupt vector)는 인터럽트를 처리할 수 있는 서비스 루틴들의 주소를 가지고 있는 공간으로 동작들이 하드코딩 되어 있다. 인터럽트를 처리하고 나면 CPU는 원래의 작업으로 돌아간다. 이 과정은 사용자가 눈치채지 못할 정도로 빠르게 실행될 수도 있고, 너무 느려서 오랜 시간을 기다려야 할 수도 있다. 참고로 어떤 값을 0으로 나누는 것도 인터럽트이고, 이러한 내부 인터럽트는 예외라고 부른다. 옛날 윈도우는 하루에 열 번씩 리셋되었다는 교수님의 말씀도 있으셨다. 

더보기

(시험문제 어렵게)

인터럽트가 걸렸는데 이것 좀 해 줘 > 백터 사용 > ISR (interupt service routine)

ex) 하드웨어가 신호 > ox1 값 백터에서 찾아서 하드웨어가 걸었구나 찾고 > 어떤 처리를 해야 할지 소프트웨어에 코딩되어 있고 메모리에 이미 들어가 있다. 부팅이나 그 이후에... > 원래 실행하고 있던 위치로 이동 

pc에서 word 실행중 값 = 4 > 4+1 save 인터럽, =크롬이 치고 들어왔어 > ISR 길어지면 안 됨 짧음 > 원래 실행하는 곳 save 해둔 곳

인터럽트가 처리되고 있는 동안에 인터럽트의 유실을 방지하기 위해 다른 인터럽트는 억제된다 > isr 짧은이유

트랩, 예외는 에러나 사용자 요청에 의해 발생한 소프트웨어가 생성한 인터럽트이다. 

 

인터럽트 핸들링

인터럽트는 인터럽트 벡터를 사용하여 제어를 인터럽트 서비스 루틴으로 넘긴다. 인터럽트 벡터는 모든 서비스 루틴의 주소를 가지고 있다.  현대 운영체제들은 대부분 인터럽트 주도적(Interrupt driven)이다. 인터럽트가 발생하기 전까지 CPU는 대기 상태에 머물고 폴링(Polling)인 경우에는 주기적으로 처리 루틴을 실행하여 자원을 낭비하기 되기에 인터럽트를 주도적으로 설계하는 것이다. 

 

인터럽 처리

인터럽트를 처리하기 이전에 현재의 레지스터와 프로그램 카운터 등을 비슷한 cpu의 상태를 보존한다. 발생한 인터럽트의 종류(폴링, 벡터)를 파악한다. 대부분 벡터이긴 하다. 인터럽트 종류에 따라 해야 할 작업을 결정하는 코드를 분리한다. 

 

 

저장장치 구조

커널은 실행기를 통해 프로그램을 실행시킨다. 실행기는 기억장치에서 exe파일을 가져오고, 커널이 이것을 메모리에 할당해 실행시킨다. 이처럼 모든 프로그램은 메인 메모리에 로드되어 실행되며 메인 메모리를 RAM이라 한다. 하지만 RAM은 너무 작고 비싸다. 

주 저장장치 - 메인메모리, cpu가 직접 접근할 수 있는 유일한 대형 저장장치, 하드디스크 안 감, 프로그램과 데이터를 모두 보관하기에 크기가 작고, 예전에 비하면 보조 저장장치의 중요성이 떨어졌다. 

보조 저장 장치는 주 저장장치의 보조로 사용되며 대형의 비휘발성 저장 장치를 제공한다. 자기 디스트는 자기 기록 물질을 입힌 금속 또는 유리판으로 구성되어 있다. 디스크 표현은 트랙으로 나눠있고 트랙 섹터로 나눠진다. 디스크 제어기가 디스크와 컴퓨터 간의 자료 전송에 관여한다. 반도체 디스트는 반도체를 사용하여 자기 디스크보다 빠른 속도로 사용하여 점차 많이 사용되고 있다. 

 

저장장치 계층 구조

저장장치는 속도, 가격, 휘발성에 맞춰 계층 구조를 이룬다. 장치 구동기(device driver)는 장치 제어기마다 있으며 입출력을 관리한다. 제어기와 커널 간에 일관된 인터페이스를 제공한다. 

캐싱

컴퓨터의 여러 단계에서 수행되는 중요한 원리로 사용되고 있는 정보가 빠른 저장장치로 복사되어 잠시 머문다. 정보가 빠른 캐시에 있는지 확인하고 있으면 캐시에서 정보를 가져오고 없다면, 자료가 캐시에 복사되고 캐시에서 사용된다. 캐시는 캐시 되는 저장 장치보다 크기가 작으며 캐시 관리가 중요한 설계 문제이다. 

 

단일처리기 시스템(Single-Processor Systems)

단일 처리기 시스템은 이제 다 옛날이야기이다. 단일 처리기 시스템은 컴퓨터에는 하나의 메인 CPU만 탑재되며, 장치에 따라 특별한 목적을 가진 프로세스가 들어가 있다. 대부분의 시스템은 한 개의 범용 프로세서를 사용한다. 디스크 프로세서는 디스크 연산만 수행하고 키보드 프로세서는 키보드 연산만 수행하는 것이다. 

 

다중 처리기 시스템(Multiprocessor Systems)

이제 다중처리기 시스템은 일반적인 컴퓨터 시스템이다.

=병렬시스템(paralle systems), 강결합 시스템(tightly-coupled)

다중처리기 시스템은 2개 이상의 프로세스를 가지고 있다. 처음에는 서버 컴퓨터에 적용되었지만 이제는 모바일 기기에서도 사용된다. 

다중처리기 시스템은 몇 가지 주요 장점을 가지고 있다. 

1. 향상된 처리량 : 프로세서가 늘어나면 더 빠른 시간 안에 연산을 수행할 수 있다. 

2. 규모의 경제 : 여러 개의 단일처리기보다 돈이 적게 든다.

3. 향상된 신뢰성 : 하나의 프로세서가 작동을 멈춰도 전체 시스템은 느려질 뿐 멈추지 않고 일을 한다. 이를 성능저하와(Graceful degradation)과 결함 허용(fault tolerance)라 부른다. 

 

다중처리기 시스템은 비대칭적 다중처리대칭적 다중처리(대부분 여기 포함)로 나누어진다. 비대칭적 다중처리는 주 처리기가 세스템을 제어하고 각 처리기에 특정 태스크를 할당하는 주종관계이다. 대칭적 다중처리는 모든 처리기를 병렬적으로 수행한다. 프로세서에 이상이 생겨 작동을 멈추게 된다면 자신이 수행하던 작업을 다른 프로세서에게 나눠주고 자신만 재부팅한다. 비대칭적 다중처리를 보완할 수 있는 아키텍처이기에 대부분 컴퓨터 시스템은 대칭적 다중처리를 사용한다. 

다중처리기 시스템의 CPU는 각자의 레지스터와 캐시를 가지고 있다. CPU가 여러 개라면 돌아가면서 작업을 하고 다른 CPU가 작업하면 다른 CPU는 작동하지 않는다. 최근에는 하나의 칩에 여러 개의 코어를 포함시켜 하나의 코어를 가진 복수 칩보다 효율적이고 빠른 속도를 보여준다. 블레이버 서버는 하나의 새시 안에서 다수의 처리기 보드, 입출력 보드, 네트워크 보드 등이 장착되어 있다. 

 

운영체제 구조(Operating System Structure)

운영체제의 가장 중요한 부분 중 하나는 멀티프로그램이다. 멀티프로그래밍은 여러 프로그램을 메모리에 두고 한 프로세스가 대기 상태가 되면 다른 프로세스의 작업을 수행하는 시스템이다. 여기서 확장된 시스템이 시분할 시스템(=멀티태스킹)이다. 프로세스마다 작업 시간을 정하여 작업하는 방식이다. 프로세스가 빠르게 번갈아가며 메모리를 사용하면 사용자에게는 동시에 작동하는 것처럼 보인다. 이때는 반응 시간을 줄이는 것이 중요하다. 

시분할은 사용자가 컴퓨터의 자원을 효율적으로 공유하는 것이다. CPU가 다수의 작업들을 매우 빈번하게 교대로 실행하여 사용자들은 작업과 상호작용할 수 있다. 각 사용자들은 최소 한 개의 프로그램이 메모리에서 실행되어야 하는데, 이를 프로세스라고 한다. 동시에 복수 작업이 CPU를 사용할 준비가 되면 스케줄을 해야 한다. 

 

운영체제 동작 

운영체제는 인터럽트 구동 방식이다. 인터럽트가 없다면 시스템은 인터럽트를 기다리고 만약 사용자의 프로그램이 멋대로 하드웨어에 접근하여 인터럽트를 보낸다면 큰 문제가 생길 것이다. 운영체제와 사용자는 컴퓨터의 자원을 공유하기에 사용자 프로그램이 오류를 일으키지 않도록 방지해야 한다.

 

이중 동작 모드

이중 동작모드가 운영체제와 다른 시스템 부분들을 사용자모드와 커널 모드로 나누어 보호한다. 유저가 함부로 건들 수 있기에 모드가 필요하다. 하드웨어는 커널 모드일 때만 특권 명령으로 지정된 명령들을 실행한다. 만약 유저 모드에서 특권 명령을 실행하려 한다면 하드웨어는 이 동작을 막고 운영체제에 트랩을 보낼 것이다. 시스템 서비스를 호출한다면 커널 모드로 변경되고 호출이 끝나면 다시 사용자 모드로 돌아간다. 

 

타이머 

타이머는 무한 루프나 자원을 계속 사용하는 프로세스를 방지하기 위해 사용한다. 운영체제에게 제어권을 보정하기 위해 특정 주기에 인터럽트를 발생시킨다. 운영체제는 카운터 값을 감소시키고 카운터가 0이 되면 인터럽트를 발생한다. 타이머 인터럽트가 발생하면 운영체제가 오류로 간주하여 프로그램을 중단하거나 프로그램에게 더 많은 시간을 할당한다. 

 

 

'사망년 > 운영체제' 카테고리의 다른 글

Synchronization Toole(동기화 도구들)  (0) 2023.12.12
CPU Scheduling  (0) 2023.12.09
chapter 1: Introduction (2)  (0) 2023.09.18