컴퓨터 시스템과 운영체제
2023. 9. 16. 03:46ㆍ전공/운영체제
컴퓨터 시스템의 4가지 요소
하드웨어(HW)
- 기본적인 컴퓨팅 자원을 제공
- 중앙처리장치(CPU), 메모리, 입출력(I/O) 장치 등
운영체제(Operating systems)
- 다양한 사용자를 위해 다양한 응용과 컴퓨터 하드웨어 사이의 interaction을 제어 및 조정
프로그램(system programs/application programs)
- 사용자의 문제를 해결하기 위해 컴퓨팅 자원을 사용
- 워드 프로세서, 스프레드시트, 컴파일러, 웹 브라우저 등
사용자(users)
- 사람, 기계, 혹은 다른 컴퓨터들

사용자 관점에서의 운영체제
사용자의 관심 이슈
- 프로그램을 사용하기 편리할 것
- 프로그램을 실행할 때 성능이 좋을 것
사용자가 신경 쓰지 않는 이슈
- 전체 시스템의 자원 이용률
컴퓨터 종류에 따라 달라지는 이슈들
- 메인프레임에 연결된 터미널
- 운영체제는 자원 이용을 극대화하도록 설계
- 각 사용자는 자신의 정당한 몫만 사용
- 클러스터 내의 워크스테이션
- 개인의 사용 편이성과 공유 자원 이용의 조화를 달성
- 휴대용 컴퓨터/임베디드 컴퓨터
- 편리한 UI 제공
- 빠른 무선 네트워크 환경 구성
시스템 관점에서의 운영체제
자원 할당자(resource allocator)로서의 운영체제
- 각 프로그램과 사용자에 대해 필요한 자원을 할당
- 효율적이고 공정한 자원 분배 결정
제어 프로그램(control program)으로서의 운영체제
- 다양한 입출력 장치와 응용 프로그램을 제어
- 컴퓨터의 부적절한 사용 및 에러 방지를 위해 프로그램의 실행에 관여
운영체제의 정의
어떤 것을 운영체제라 하는가?
- 운영체제와 비운영체제를 구분하는 기준은 명확하지 않음
- 운영체제의 기능은 컴퓨터 시스템에 따라 크게 달라질 수 있음
운영체제에 대한 일반적인 정의
- 컴퓨터에서 반드시 실행되는 하나의 프로그램
- 커널(kernel) : 컴퓨터 시스템을 동작시키기 위해 필요한 운영체제의 핵심 컴포넌트 집합
- 운영체제의 최소 단위
- 시스템프로그램(system program) : 운영체제와 연계되지만 반드시 커널에 포함되지는 않음
컴퓨터 HW 시스템 구조
범용 컴퓨터(general-purpose) 시스템
- 범용 컴퓨터 : 특정 기기나 응용에 종속되지 않고 다양한 목적을 지니는 다양한 프로그램들을 별다른 제약 없이 실행할 수 있는 컴퓨터
- ↔ 특수목적 컴퓨터 : 특수한 목적을 수행하기 위해 사용하는 컴퓨터
- ex) 임베디드 컴퓨터
- ↔ 특수목적 컴퓨터 : 특수한 목적을 수행하기 위해 사용하는 컴퓨터
- 단일 혹은 다중 코어로 구성된 CPU로 운영
- 각 코어들이 공유하는 메모리를 구축
- 각 주변 장치를 제어하는 디바이스 컨트롤러 부착
- 디바이스 컨트롤러가 각 디바이스의 요청을 받아 운영체제에 인터럽트(신호)를 보내서 작업을 처리
- 특수목적 레지스터(special purpose resistor)
- local buffer storage
- HW 컴포넌트와 공유 메모리 사이에서 데이터를 전송하도록 하는 system bus 구성

저장장치 계층 구조
레지스터
- CPU 코어 내에 위치하며, 가장 빠른 접근 속도 제공
- 메인 메모리로부터 instruction 및 operands를 가져와서 레지스터에 적재한 후 연산 수행
메인 메모리
- Dynamic random-access memory(DRAM)을 사용
- 메모리의 모든 위치에 대해서 동일한 속도로 데이터를 읽고 쓸 수 있음
- 디스크에 비해 용량이 작음
- 휘발성(volatile)
보조기억장치
- 프로그램과 데이터를 영구 저장(non-volatile)
- 대용량
- Hard disk drive(HDD), Solid state drive(SSD)등을 사용
캐싱(caching)
- 속도가 더 빠른 저장장치에 데이터에 대한 복제본을 생성
- 자주 접근하는 데이터에 대해 빠른 처리 속도 달성
- 캐시 메모리
- 레지스터의 크기는 메인메모리보다 훨씬 작음
- 필요한 데이터를 저장하려면 메인메모리에 자주 접근하여 데이터를 읽고 덮어써야 함
- 성능적으로 비효율적
- 운영체제 관점에서 자주 접근한다고 판단되는 명령어 집합 또는 데이터를 레지스터와 메인 메모리 사이의 별도의 저장공간(캐시)을 두면 빠르게 가져올 수 있음
- 크기, 접근 시간, 대역폭 모두 레지스터와 메인메모리의 중간 값
- 캐시 메모리의 크기를 키우면
- 물리적 면적 커짐 → CPU의 다른 장치 작아짐 ⇒ CPU 연산 능력 떨어짐
- 캐시 메모리는 메인 메모리보다 비쌈
- 캐시 메모리에 대한 교체 알고리즘
- 어떤 데이터가 자주 접근하는 데이터인지 판단


아래층으로 내려갈수록 접근 속도는 느리고 가격은 저렴
컴퓨터 시스템 부팅
컴퓨터 시스템 부팅 프로시저(booting procedures)
- 전원 ON
- ROM 혹은 플래시 메모리 위에서 BIOS(Basic Input & Output System) 구동
- BIOS는 CMOS 및 컴퓨터 HW에 대해 POST(power on self test) 수행
- BIOS는 부팅 파티션의 MBR(master boot record)을 읽어옴
- MBR의 부트로더( 혹은 부트스트랩)가 메모리에 적재됨
- 부트로더는 운영체제의 커널 이미지를 메모리에 올림
- 운영체제가 컴퓨터 시스템을 총괄
인터럽트
인터럽트(Interrupt)
- 하드웨어 혹은 소프트웨어에서 발생한 사건(event)을 운영체제에게 전달
- 트랩(Trap) : 소프트웨어에 의해 생성된 인터럽트
인터럽트 서비스 루틴(Interrupt service routine, ISR)
- 인터럽트를 처리하기 위한 code
- 인터럽트가 발생하면 레지스터의 instruction pointer를 ISR주소로 이동 및 인터럽트 처리
- 처리 완료 후 이전 process의 실행 중단 지점으로 복귀
인터럽트 벡터(Interrupt vector)
- (주요한) ISR의 주소를 저장한 배열(혹은 포인터 테이블)
- ISR주소를 빠르게 색인
인터럽트 처리 과정(시간에 따른)
- CPU는 유저 프로세스를 처리 중
- I/O장치에서 I/O request 발생 → I/O인터럽트를 CPU에게 전송
- CPU는 프로세스 정보를 저장 후 제어권을 OS에게 넘김
- OS는 인터럽트 벡트 등을 이용하여 ISR 색인
- 인터럽트 처리 후 중단 된 프로세스에게 다시 제어권이 넘어감
- CPU는 중단된 프로세스에 대해 실행 재개

인터럽트 처리 과정(CPU-IO 장치 관계에 따른)

- 운영체제가 관리하는 device driver가 작업 시작
- I/O controller가 유저 또는 다양한 프로세스로부터 발생할 수 있는 I/O작업처리를 위한 준비 작업
- 해당 I/O장치에서 다양한 이벤트를 처리하기 위한 인터럽트 신호 생성
- CPU가 인터럽트 신호 수신 → CPU가 제어권을 프로세스에서 운영체제로 넘겨줌
- 운영체제는 인터럽트를 처리하기 위한 적절한 인터럽트 서비스 루틴을 찾아서 실행
- CPU의 제어권이 운영체제로부터 반환되어 중단된 프로세스의 실행을 재개
직접 메모리 접근(Direct memory access, DMA) 장치
- CPU의 개입 없이 디바이스 컨트롤러와 메모리가 직접 데이터 블록을 전송할 수 있도록 하는 장치
- 바이트 단위가 아닌 데이터 블록 전체에 대해 인터럽트 처리
- 인터럽트 발생 수가 줄어든다.
- CPU가 다른 프로세스 처리에 집중할 수 있음
- 잦은 인터럽트로 발생하는 성능 저하를 막을 수 있음

멀티프로그래밍과 멀티태스킹
멀티프로그래밍(Multi- programming)
- 한 명의 사용자 혹은 여러 사용자를 통해 단일 컴퓨터 시스템에서 여러 프로그램을 동시에 실행하는 것
멀티태스킹(Multi-tasking)
- 여러 사용자들이 동시에 컴퓨터 시스템과 상호 작용하(고있다고 느끼)게 하는 것
- 대화식 시스템(Interactive system)
- 시분할 시스템(Time-sharing system)
- 프로세스가 CPU를 점유할 수 있는 시간이 유한함
- 한계 시간이 넘으면 다른 프로세스에게 CPU자원을 반환
- 프로세스 스케쥴링

타이머
타이머(Timer)
- 지정된 시간 후 컴퓨터를 인터럽트 하도록 설정할 수 있는 하드웨어
- 특정 프로세스가 CPU를 독점하지 못하도록 방지
가변 타이머
- 인터럽트를 발생시키는 시간 간격이 임의로 결정되는 타이머
- 고정률의 클럭(fixed-rate clock) 및 계수기로 구현