컴퓨터 시스템 구조 (Computer System Structure)
- 하드웨어 (Hardware) : 기본 컴퓨팅 리소스 제공
▶ CPU, 메모리, I/O 디바이스 - 운영체제 (Operating System)
▶ 애플리케이션, 사용자가 하드웨어를 더 잘 쓰게 제어하고 조정하는 프로그램. - 애플리케이션 프로그램 (Application Programs) : 사용자의 컴퓨팅 문제를 해결하기 위해 시스템 리소스를 어떻게 사용할지 정의된 프로그램.
▶ 워드 프로세서, 컴파일러, 웹 브라우저, 게임 등 - 사용자 (Users) : 사람, 머신, 다른 컴퓨터 등
운영체제 (Operating Systems)
보편적으로 인정되는 정의는 없으나 OS는 유저가 컴퓨터를 편하게 사용할 수 있도록 하드웨어 자원 배분을 하며하고 사용자 프로그램의 실행을 효율적으로 제어하는 프로그램입니다. (1. resource allocator 2. control program)
- 커널 (Kernel) : OS 중 항상 메모리에 올라가있는(running at all times) 핵심부분으로 하드웨어와 애플리케이션 사이 인터페이스 제공 역할과 컴퓨터 자원 관리 역할을 합니다.
- 커널을 제외한 다른 모든 것은 둘 중 하나입니다.
▶ 시스템 프로그램 : 운영체제에 일부이지만 커널이 아닌 부분
▶ 애플리케이션 프로그램 : 운영체제와 연결되지 않은 모든 프로그램
OS는 커널모드와 사용자 모드로 나뉘어 구동됩니다.
인터럽트 (Interrupt)
잠시 CPU의 작동을 방해하여 멈추고 끼어든 것. 인터럽트는 일반적으로 모든 인터럽트 서비스 루틴의 주소를 포함하는 인터럽트 벡터(interrupt vector)를 통해 제어를 합니다. 예를 들어 I/O를 통해 입력을 한다면 I/O interrupt로 잠시 중단됩니다.
* 인터럽트 서비스 루틴 (ISR : Interrupt Service Routine) : 실제 인터럽트를 처리하는 루틴
* 인터럽트 벡터 테이블 (Interrupt Vector) : 인터럽트에 대한 ISR의 시작주소, 즉 인터럽트 벡터를 모두 보관하는 테이블
시스템 콜 (System Calls)
OS가 제공하는 서비스에 대한 프로그래밍 인터페이스. 커널영역의 기능을 사용자 모드가 가능하게 도와주는 인터페이스입니다. 일반적으로 직접 시스템 콜을 호출하기 보다는 API를 통해 프로그램에 의해 엑세스합니다.
*API (Application Programming Interface) : 컴퓨터 혹은 컴퓨터 프로그램 사이의 통신을 도와주는 일종의 소프트웨어 인터페이스. 추상적인 원칙.
Why API? : 이식성(Portability), 편의성
OS의 서비스
UI, 프로그램 실행, I/O operations, 파일 시스템 조작(logicaly. 추상 레벨에서), 통신, 에러 처리, 리소스 조작, 로깅(Logging. 사용자 로그), 보호/보안 등이 있습니다.
애플리케이션이 OS에 특정한 이유.
애플리케이션은 한 OS에 컴파일될 때 보통 다른 OS에서는 실행할 수 없습니다. 각 OS는 고유의 시스템 콜을 제공하기 때문입니다.
멀티 OS가 가능한 경우
1. 인터프리터 언어로 작성된 경우(파이썬, 루비 등) : 컴파일을 하지 않고 소스 코드를 한 줄씩 읽어 바로 실행하는 컴퓨터 프로그램.
2. 가상머신을 포함한 언어로 작성된 앱 (Java, JVM(Java Virtual Machine)
3. C 같은 스탠다드 언어로 작성 후, 각 OS에 맞게 컴파일러가 따로 있는 경우
OS의 목표
OS도 결국 컴퓨터 프로그램. 어떤 목적으로 개발했을까?
User Goals : OS가 사용하기 편리해야하고, 배우기 쉬워야하고, 신뢰성 있고, 안전하고 빨라야합니다. 자원 효율성 등은 관심이 적습니다
System Goals : OS는 디자인/개발/유지보수 하기 쉬워야하고, 신뢰성 있고 유연하고 효율적이고 에러가 적은, 만들기 쉬워야 합니다.
정책(Policy) : 무엇을 할건가? 와 매커니즘(Mechanism) : 어떻게 할건가? 에 대한 고려도 중요.
Policy : CPU 사용에 시간을 제한한다. Mechanism : 시간 측정을 위해 타이머를 사용하자. → time interrupt (가장 빈도수 높은 인터럽트)
OS별 나름대로의 목표와 방식이 있고 모듈, 마이크로 커널, 여러 OS 구조 예시 등이 있습니다.
부팅도 OS가 합니다!
<생략 기억안나는건 굿노트 확인>
'강의 > OS' 카테고리의 다른 글
OS - Thread (0) | 2023.06.29 |
---|---|
OS - Processes (0) | 2023.06.27 |
CPU스케줄링(5장) - 시험 요약 (0) | 2023.04.20 |
스레드 (4장)-시험 요약 (1) | 2023.04.20 |
프로세스(3장)시험 요약 (1) | 2023.04.20 |