운영체제(OS)란?
하드웨어를 효율적으로 관리해서 사용자 혹은 응용 프로그램에게 서비스를 제공하는 역할을 수행하는 소프트웨어
컴퓨터 하드웨어
-
프로세서(연산)
- CPU
- 그래픽카드(GPU)
- 응용 전용 처리장치 등
-
메모리(저장)
- 주 기억장치
- 보조 기억장치 등
-
주변장치(입력, 출력, 네트워크 장치 등)
- 키보드/마우스
- 프린트
- 네트워크 모뎀 등
프로세서(Processor)
- 컴퓨터의 두뇌(중앙처리장치)로서
연산
및 컴퓨터의 모든 장치의 동작을 제어
함.
레지스터(Resister)
- 프로세서 내부에 있는
메모리
- 프로세서가 사용할 데이터 저장
- 컴퓨터에서 가장 빠른
메모리
- 레지스터의 종류
- 용도에 따른 분류(전용 레지스터, 범용 레지스터)
- 사용자가 정보 변경 가능 여부에 따른 분류(사용자 가시 레지스터, 사용자 불가시 레지스터)
- 저장하는 정보의 종류에 따른 분류(데이터 레지스터, 주소 레지스터, 상태 레지스터)
프로세서의 동작
다양한 레지스터들을 통해 연산이 이루어짐.
운영체제와 프로세서
- 프로세서에게 처리할 작업 할당 및 관리(프로세스 생성 및 관리)
- 프로그램의 프로세서 사용 제어(프로그램의 프로세서 사용 시간 관리, 복수 프로그램간 사용 시간 조율 등)
메모리(Memory)
-
데이터를 저장하는 장치(기억장치)
- 프로그램(os, 사용자sw 등), 사용자 데이터 등
-
메모리의 종류
-
주기억 장치(Main memory)
- 프로세서가 수행할 프로그램과 데이터 저장
- DRAM을 주로 사용
- 디스크 입출력 병목현상(I/O bottleneck) 해소
- 캐시
- 프로세서 내부에 있는 메모리(L1, L2 캐시 등)
- 메인 메모리의 입출력 병목현상 해소
- 일반적으로 HW적으로 관리됨
- 용량이 매우 작지만 지역성(공간적, 지역성)을 통해 효과적으로 사용됨.
- 지역성은 캐시 적중률과 밀접하므로 알고리즘 성능 향상을 위한 중요한 요소 중 하나임.
- 공간 지역성 예시
2차원 배열을 for문을 통해 메인 메모리의 데이터를 가져온다고 가정했을 때 첫 번째 인자는 캐시 내 영역에 존재하지 않기 때문에 메인 메모리에서 블록 라인(행 방향) 기준으로 올려두게 됨.
따라서, for 문에서 출력을 colunm 기준으로 하게되면 초기에 올려놓은 블록 라인에서 해당 데이터를 찾을 수 없기 때문에 다시 메인 메모리에서 가져와야 함(캐시 미스). 그러므로 행방향으로 출력하는 것이 훨씬 효율적임.
- 보조기억 장치
- 프로그램과 데이터를 저장
- 프로세서가 직접 접근할 수 없음(주 기억장치를 거쳐서 접근)
- 용량이 크고, 가격이 저렴함.
메모리 할당 및 관리
- 프로그램의 요청에 따른 메모리 할당 및 회수
- 할당된 메모리 관리
가상 메모리 관리
- 가상메모리 생성 및 관리
- 논리주소 -> 물리주소 변환
시스템 버스(System Bus)
- 하드웨어들이 데이터 및 신호를 주고 받는 물리적인 통로
- 데이터 버스: 프로세서와 메인 메모리, 주변장치 사이에서 데이터를 전송한다. 데이터 버스를 구성하는 배선 수는 프로세서가 한 번에 전송할 수 있는 비트 수를 결정하는데, 이를 워드라고 함.
- 주소 버스: 프로세서가 시스템의 구성 요소를 식별하는 주소 정보를 전송함. 주소 버스를 구성하는 배선 수는 프로세서와 접속할 수 있는 메인 메모리의 최대 용량을 결정함
- 제어 버스: 프로세서가 시스템의 구성 요소를 제어하는데 사용한다. 제어 신호로 연산장치의 연상 종류와 메인 메모리의 읽거나 쓰기 동작을 결정함
주변장치와 운영 체제
장치드라이버
- 어떤 하드웨어를 사용하기 위한 인터페이스
- 장치를 만드는 쪽에서 장치들을 편하게 사용하기 위해 인터페이스를 제공하게 되고, OS는 얘를 통해서
인터럽트(Interrupt) 처리
- 주변 장치의 요청 처리
- 디스크 공간 관리
- 입력이 들어왔을 때 입력이 들어왔다고 알려주는 것
운영 체제의 역할
- User Interface(편리성)
- Resource management(효율성)
- HW resource(processor, memory, I/O devices, etc)
- SW resource(file, application, message, signal, etc)
- Process and Thread management
- System management(시스템 보호)
컴퓨터 시스템의 구성
-
사용자가 kernel에 직접 접근해서 조작해버리면 OS가 하드웨어를 제어하는데 문제가 있을 수 있기 때문에 필요한 기능이 있으면 커널에 요청을 해야하는데 이 때, 통로가 system call interface
-
system call interface: 커널이 제공하는 기능들 중에서 사용자가 사용할 수 있는 기능들을 모아놓은 것들(=시스템 라이브러리)
운영 체제의 구분
- 동시 사용자 수
- Single-user system
- Multi-user system
- 동시 실행 프로세스 수
- Single-tasking system
- Multi-tasking system
- 작업 수행 방식 (사용자가 느끼는 사용 환경)
- Batch processing system
- Time-sharing system
- Distributed processing system
- Real-time system
운영체제의 구조
운영체제의 기능
프로세스 관리
- 프로세스(Process)
- 커널에 등록된 실행 단위 (실행 중인 프로그램)
- 사용자 요청/프로그램의 수행 주체(entity)
- OS의 프로세스 관리 기능
- 생성/삭제, 상태관리
- 자원 할당
- 프로세스 간 통신 및 동기화
- 교착상태(deadlock) 해결 - 여러개의 프로세스가 동일한 자원을 사용하려 할 때
- 프로세스 정보 관리
프로세서 관리
- 중앙 처리 장치(CPU)
- 프로세스 스케줄링
- 프로세서 할당 관리
- 프로세스들에 대한 프로세서 할당 - 한번에 하나의 프로세스만 사용 가능
메모리 관리
- 주 기억 장치 - 작업을 위한 프로그램 및 데이터를 올려 놓는 공간
- Multi-user, Multi-tasking 시스템
- 프로세스에 대한 메모리 할당 및 회수
- 메모리 여유 공간 관리
- 각 프로세스의 할당 메모리 영역 접근 보호
- 메모리 할당 방법(scheme)
- 전체 적재
- 일부 적재(virtual memory concept)
- 프로그램 및 데이터의 일부만 적재
- 장점: 메모리의 효율적 활용 / 단점: 보조기억 장치 접근 필요
파일 관리
- 파일: 논리적 데이터 저장 단위
- 사용자 및 시스템의 파일 관리
- 디렉토리 구조 지원
- 파일 관리 기능
- 파일 및 디렉토리 생성/삭제
- 파일 접근 및 조작
- 파일을 물리적 저장 공간으로 맵핑
- 백업 등
I/O 관리
- 입출력(I/O) 과정
- os를 반드시 거쳐야 함
reference
https://www.youtube.com/channel/UCHvXywxOtwLedY5OX-Teg5w