#1 - 운영체제 1장
운영체제란?
- 사용자와 하드웨어간의 상호작용 위한 프로그램을 의미한다.
- 운영체제의 목표
- 사용자의 관점에서 : 프로그램을 동작시키고, 문제를 해결하기 쉽게 해준다.
- 시스템의 관점에서 : 자원을 관리하고, 프로그램을 컨트롤한다.
- 장점 및 효율
- 컴퓨터 시스템을 편리하게 사용하게 한다.
- 컴퓨터의 하드웨어를 효율적인 방법으로 사용하게 한다.
컴퓨터 시스템 구조
- 컴퓨터 시스템은 크게 4가지 요소로 분할된다.
- 하드웨어 : 컴퓨터의 기본적인 자원들을 의미한다.
- ex) CPU, memory, I/O 장치들
- 운영체제 : 프로그램이나 유저들과 하드웨어 사이에서 발생하는 동작을 컨트롤하고 조정(coordinate)한다.
- 애플리케이션 프로그램 : 시스템 자원을 이용하여 사용자가 원하는 문제를 해결하도록 해주는 도구들이다.
- 사용자 : 컴퓨터를 사용하는 사람, 컴퓨터를 사용해야하는 다른 기기, 컴퓨터들을 의미한다.
- 하드웨어 : 컴퓨터의 기본적인 자원들을 의미한다.
그렇다면 운영체제가 하는 일이 구체적으로 무엇인가?
- 운영체제는 시스템 자원을 할당하는 역할을 한다.
- 물리적인 자원 : CPU나 Memory, HDD 등 물리적으로 동작하는 모든것들을 관리한다.
- 가장 자원 : 세그먼트, 페이지, 파일시스템, 통신프로토콜 등 실제로 눈에 보이지 않으나 사용되는 자원들도 관리한다.
- 여러 프로그램들이 동시에 동작할때 자원에서 발생하는 conflict를 해결하기 위해 공평하고 동등하게 자원을 분배한다.
- 운영체제는 프로그램을 컨트롤 하는 역할을 한다.
- 프로그램이 동작할 때 발생하는 오류나 부적절한 동작에 대하여 관리하고 제어하는 역할을 한다.
컴퓨터 시스템의 구조와 동작
- 컴퓨터는 CPU와 여러 디바이스 컨트롤러들이 하나의 메모리로부터 버스를 통해 연결된 것을 의미한다.
- 사진
- 모든 디바이스들은 디바이스 컨트롤러를 통하여 시스템에서 조작할 수 있고, 메모리는 버스를 통해 디바이스 컨트롤러로 전달된다.
- 32비트체제와 64비트 체제는 어떻게 다를까?
- 32비트 체제 : 메모리로 부터 읽을 수 있는 메모리 주소의 최대 크기가 2의 32승인 시스템이다.
- 따라서 32 비트 체제에서 메모리 주소의 최대 값은 약 4GB가 된다,
- 즉 32비트 체제의 컴퓨터에 꽂을 수 있는 램카드는 4GB가 최대 크기이다.
- 64비트 체제 : 메모리로 부텅 읽을 수 있는 메모리 주소의 최대 크기가 2의 64승인 시스템이다.
- 따라서 32 비트 체제에서 메모리 주소의 최대 값은 천문학적 크기가 된다.
- 컴퓨터 시스템은 어떻게 동작하는가?
- CPU와 메모리 사이에는 연산 속도의 차이를 제어하기 위한 완충공간으로 buffer를 사용한다,
- I/O 디바이스는 크게 3가지로 구분된다.
- Device : 실제로 동작이 이루어지는 기기
- Block 단위 Device : Char의 모음(버퍼를 사용)
- ex) 프린터기, 스케너 등
- Char 단위 Devvice : Char 각각의 동작 - 비트 단위 (버퍼를 사용하지 않음)
- ex) 마우스, 키보드 등
- Deivce Controller : 각각의 디바이스에게 책임이 있으며, 디바이스를 컨트롤함
- 디바이스 컨트롤러는 버퍼를 가질 수 있다.
- 할일이 모두 끝나고 나면 interrupt를 방생시켜 CPU에세 지시를 요청한다.
- Dvice Driver : Device Controller가 사용가능하게 하는 드라이버
- ex) Logitech G hub, HP Printer Driver 등
- Device : 실제로 동작이 이루어지는 기기
Interrupt가 뭔가요?
- Interrupt : 하드웨어에서 발생한 이벤트를 서비스의 주소가 포함된 인터럽터 백터로 운영체제에 전송하는 것을 의미한다.
- 하드웨어와 OS사이의 상호작용은 Interrupt이다.
- ex) 키보드로 alt + F4를 누르는 것은 Interrupt이다.
- 소프트웨어와 OS사이의 상호작용은 Signal이다.
- ex) os.sleep(10) 이라는 코드는 signal이다.
- 하드웨어와 OS사이의 상호작용은 Interrupt이다.
- 하드웨어에서 나오는 모든 신호는 interrupt이며 우선순위를 가진다.
- 우선순위에 따라 하나의 interrupt가 리 처리중일 때 우선순위가 낮은 interrupt는 발생하지 않는다.
- ISR : Interrupt Service Rutine의 약자로 interrupt의 해석본이다.
- IVT : Interrupt Vector Table의 약자로 각각의 interrupt의 포인터가 저장된 1차원 배열이다.
- 동작되는 원리는 다음과 같다.
- 키보드로 정지신호 입력 (Ctrl + C 가 입력된 것으로 가정)
- IVT의 테이블에 포인터로 저장이된다. (2번 인덱스에 저장된것으로 가정)
- 포인터를 따라서 가서 어떤신호인지 ISR로 분석 (이 interrupt는 정지하라는 신호)
- ISR의 절차에 따라 Interrupt를 처리 (동작중이던 프로그램을 정지)
- 모든 처리가 끝나면 발생위치로 복귀(정지가 입력되었던 위치로 다시 이동)
- 만약 일련의 처리 과정중 더 높은 순위의 Interrupt가 발생하면 처리를 중지하고 더 높은 interrupt를 처리
- Interrupt는 크게 외부 interrupt와 내부 interrupt로 구분된다.
- 외부 Interrupt : 비동기적으로 발생하며 외부 디바이스로 인해 발생한다.
- ex) 키보드로 숫자를 입력, 프린터기의 정지 버튼 누르기
- 내부 Interrupt : 동기적으로 발생하며 아래의 3가지로 방법으로 처리한다.
- Fault : 현재 명령을 저장 -> ISR 제공 -> 다시 원래위치로 복귀 후 실행
- ex) 아직 메모리로 페이지가 넘어오지 않은 상황 등
- Trap : 현재 명령을 저장 -> ISR 제공 -> 원래 위치의 바로 다음줄로 복귀 후 실행
- ex) 예외 상태로 지정된 Interrupt의 처리 등
- Abort : ISR 제공 -> 모든 동작을 최소함
- ex) 0으로 나누기를 한다 등 치명적인 상황
- Fault : 현재 명령을 저장 -> ISR 제공 -> 다시 원래위치로 복귀 후 실행
- Interrupt를 어떻게 관리하는가?
- 모든 interrupt는 동작 위치가 저장되어있어야함 - 처리 후 복귀하기 위하여
- 발생한 Interrupt에 따라 다르게 판별하여 동작하는데, 동작 방식은 아래와 같다.
- Vectored Interrupt System : CPU를 정지시키고 interrupt를 처리
- 비유를 하자면, 피자를 주문하고 다른 곳에 갔다가 오는 행위와 유사함
- Polling System : CPU가 처리되는 것을 그 자리에서 기다림
- 아주 빠르게 처리되며 문맥교환이 발생하지 않는다.
- CPU가 다른 동작을 하지 못하기 때문에 CPU자원의 낭비가 있다.
- 비유를 하자면, 피자를 주문하고 그 자리에서 피자를 기다리는 행위와 유사함
- 아주 빠른 I/O 디바이스나, 아주 짧은 서비스 루틴에 사용하면 좋다.
- 위의 두 방법은 상황에 맞게 사용되어야 하며 주로, 더 빠른 방법을 사용하면 좋다.
- Vectored Interrupt System : CPU를 정지시키고 interrupt를 처리
Storage Structure - 저장공간
- Main memory : CPU가 직접적으로 접근 가능한 큰 규모의 데이터 저장공간
- Secondary storage : 메인 메모리를 확장시킨 데이터 저장공간
- Magnetic disks : 금속이나 유리에 물리적으로 저장되어 있도록 하는 저장공간
- Electronic disks : 전기적으로 저장되도록 하는 저장공간
저장공간의 평가 척도 4가지
- 속도(speed), 가격(Cost), 크기(Size), 휘발성(Volatility)
OS의 구조적 특징
- OS의 구조적 특징은 크게 두가지 정도있다.
- Multiprogramming : 가능한 CPU가 쉬지 않도록 해야한다.(효율성)
- I/O가 발생하면 낭비하는 시간이 있는데 이런 상황에서 OS가 해야할 작업을 교체해준다.
- 바로 실행가능한 환경이 있어야 바로 교체가 가능하기 때문에 ready to excute 환경을 구축해야한다.
- Job scheduler에 의해 해야할 작업의 순서를 정한다.
- 가장 중요한 것은 Ready to Excute하기위해 동작이 필요한 작업이 메모리에 올라와 있어야 하는것 이다.
- Timesharing : 가능한 모든 CPU가 공평하게 동작해도록 해야한다.(편의성)
- 하나의 오래걸리는 작업이 CPU하나를 너무 오랫동안 점유하는 상황을 방지한다.
- 하나의 CPU가 할당된 시간이 있으며 그 시간이 끝나면 다음 CPU화 Context Switching이 발생한다.
- 자주 스위칭이 발생하면 Context Switching으로 인해 더 오랜 시간이 걸릴 수 있다.
- 하지만 예를 들어 4개의 CPU가 있고, 5초의 작업 시간을 할당해준다면 4번째 CPU는 적어도 20초 안에 동작한다.
- 따라서 공평하게 CPU간의 작업이 이루어지게 된다.
Process Management (프로세스 관리)
Program VS Process
- Program : Storage에 존재 - 동작 중 변경이 불가능
- Process : Memory에 존재 - 변형이 가능
- CPU의 관리 대상 1순위는 Process이다.
Process 특징
- 현재 실행중인 Program을 의미한다.
- CPU, Memory, I/O, files 등의 자원이 필요하다,
- 프로세스의 초기화에 사용될 초기데이터도 필요하다.
- 자원을 필요로 하는만큼 사용한 자원의 반납도 잘 이루어지도록 해야한다.
Process Maagement가 해야하는 일
- 유저와 시스템이 사용하는 프로세스을 생성하고 지운다.
- 프로세스의 일시정지와 실행하도록 한다.
- 연관이 있는 프로세스끼리의 데이터는 동기화를 시켜야한다.
- 연관이 있는 프로세스끼리의 통신을 해야한다.
- 만약 교착상태(Dead Lock)이 발생한 프로세르를 관리한다.
Memory Management (메모리 관리)
- Memory : 데이터 부분과 명령어 부분으로 나누어져있음
- CPU의 관리대상 2순위
- 필요로하는 메모리의 할당과 반납을 하도록 한다.
- 메모리가 사용되는 모든 작업에서 누가, 언제, 얼마나 사용했는지 기록한다.
File Managemanet(파일 관리)
- file : 실제 Storage에 존재하는 물리적인 존재
- 실제하는 데이터를 관리하기 위해 Device Driver가 관리한다.
- Why? : 파일마다 접근속도, 용량, 접근 방식 등이 다르기 때문
File System & Storage Management (파일 시스템, 저장공간 관리)
File System
- 파일은 여러 디렉토리에 의해 구성되어있다.
- 파일 시스템은 어떤 파일에 누가 접근 가능한지 결정한다.
- 파일 시스템은 파일 생성, 삭제, 수정하는 기능을 가진다.
Storage Management
- 사용가능한 유효 저장 공간 관리
- 디스크 스케줄링
이번 포스팅의 핵심
- OS가 하는일이 무엇인가?
- 프로세스를 관리함
- 메모리를 관리함
- 파일과 파일시스템을 관리함
- 저장공간을 관리함
- CPU가 항상 동작하도록 메모리에 실행할 프로그램을 올려놓음
- CPU가 공평하게 동작하도록 실행 시간을 지정해둠
- I/O디바이스들을 Interrupt를 통해 관리한다.
- 데이터나 프로세스의 순서가 꼬이지 않도록 스케줄링 한다.
😺 오타나 논리적 오류 지적은 언제든지 환영합니다!😺
항상 읽어주셔서 감사합니다~ 🙏
Leave a comment