💻 운영체제
컴퓨터 하드웨어와 사용자를 중재하는 소프트웨어이다.
📄 운영체제의 목적
1. 편리성 : 컴퓨터를 보다 편리하게 사용하게 해준다.
2. 효율성 : 컴퓨터 시스템 자원을 효율적으로 사용할 수 있게 해준다.
📄 사용자 인터페이스로서의 운영체제
일반적인 최종 사용자는 컴퓨터 구조에 관심이 없다.
최종 사용자는 컴퓨터를 응용 프로그램의 집합으로 바라본다.
응용 프로그램은 프로그래머가 개발하는데
만약 하드웨어의 컨트롤을 프로그래머가 개발하려면 매우 어려울 것이다.
이런 복잡한 과정을 쉽게 처리하기 위해 다양한 시스템 프로그램이 제공된다.
이를 보통 유틸리티(라이브러리)라 부른다.
이중 가장 중요한 유틸리티의 모음을 OS라 할수있다.
OS는 하드웨어에 대한 상세한 정보는 숨기고 시스템을 편리하게 사용할 수 있게 해주는 인터페이스를 제공한다.
간단히 얘기 하자면 운영체제는 다음과 같은 서비스를 제공한다.
- 프로그램 개발 : 커널의 일부는 아니지만 커널에 접근할수 있는 유틸리티 프로그램을 제공하여 개발의 편의성을 높인다.
- 프로그램 실행 : 프로그램 실행시 사용자를 대신하여 필요 자원을 스케줄링한다.
- 입출력 장치 접근 : 각 입출력 장치마다 요구하는 독특한 명령 등을
사용자에게 숨겨 단순히 읽고 쓰기 관점에서 이용가능하게 한다.
- 파일 접근 제어 : 파일의 생성,삭제,수정,조직 등을 관리하며 데이터의 안전한 접근을 보장한다.
- 시스템 접근 : 동시접근 및 불법 접근에 대한 문제를 다룬다.
등의 일을 한다.
요약하자면
복잡한 하드웨어 작업을 사용자가 자세히 알필요 없이 쉽게 이용할수 있게 인터페이스를 제공한다.
📄 자원 관리자로서의 운영체제
컴퓨터는 다양한 자원을 가지며 프로그램은 각 자원을 필요로 한다.
1. 프로세서
- 메모리에는 여러 프로세스가 한 프로세서에는 한 프로세스만 실행가능하다.
그래서 하나의 프로세스가 프로세서 사용시 공정하게 할당해야하는데 이를위해 스케줄링을 해야한다.
2. 메모리
- 프로세스에게 어떻게 메모리를 할당하는지
만약 메모리가 가득찼다면 어떻게 극복하는지
3. I/O 모듈
- 앞서 배운 인터럽트 핸들러를 통해 입출력 작업 수행
4. 보조기억장치
등이 존재하며 OS는 이 자원의 관리를 책임진다.
📄 PS
1. OS도 일반적인 소프트웨어와 동일하게 동작한다. 즉 OS또한 프로세서에 의해 수행되는 프로그램이다.
2. OS는 자주 프로세서 사용 권한을 응용 프로그램에게 넘기며, 다시 돌려받는 것도 프로세서에 의존해야한다.
커널
- 운영체제에서 가장 자주 사용되는 기능(함수)들의 집합이다.
📄 현대 운영체제의 핵심
운영체제는 다양한 과정을 거쳐 발전되었다.
현재 운영체제에서 주로 사용하는 방식은
시분할 시스템(Time-Sharing Systems)
이라 할수있다.
📄 멀티프로그래밍 일괄처리 시스템
프로세서가 항상 실행될수 있게 만들어 프로세서의 낭비를 최소화 하는 방식
I/O 작업 수행시 유휴 상태에 빠지지 않게 I/O작업은 제껴두고 다른 프로세스를 실행시킴
각 프로세스가 I/O 작업시 유휴 상태에 빠지면 해당 시간을 대기하는 것이 아닌
빠르게 다른 프로세스를 실행시켜 유휴 시간을 최소화한다.
이를 위해서 입출력 인터럽트와 DMA를 지원하는 하드웨어가 필수적이다.
📄 시분할 시스템
멀티프로그래밍 사용시 굉장히 효율적인 일괄처리가 가능하다.
하지만 멀티프로그래밍은 I/O 작업이 발생하지 않는다면 계속 한 프로세스를 작업한다.
이를 해결하기 위해 시분할 시스템이 개발되었다.
각 사용자 프로그램이 짧은 시간(quantum)동안 번갈아 수행되도록 운영체제가 해준다.
n명의 사용자가 서비스를 요청한다면 실제로는 1/n의 성능만큼만 컴퓨터를 사용하는 것이지만
매우 짧은 시간동안 번갈아 사용하기에 사용자는 자신이 독점하는 듯한 느낌을 받는다.
📄 비교
일괄처리 멀티프로그래밍
- 프로세서 이용률의 최대화를 위함
- I/O 작업이 없다면 한 프로세스 계속
시분할
- 응답시간의 최소화를 위함
- 시간을 잘 분할해야함 너무 짧아도 너무 길어도 안됌
📄 최근 운영체제 설계 방식
1. 마이크로 커널 아키텍쳐
2. 멀티스레딩
3. SMP(대칭형 멀티 프로세싱)
4. 분산 운영체제
5. 객체-지향 설계