[CS 스터디] 운영체제 1일차 - 운영체제 개념

강아람·2022년 12월 25일
0

운영체제

목록 보기
1/11
post-thumbnail

📚 운영체제란?

응용프로그램 또는 사용자가 컴퓨터 하드웨어를 편리하고 효율적으로 사용하게 하기 위하여 시스템 자원(메모리, 프로세서 등)을 관리하고 여러가지 프로그램이 필요로 하는 공통적인 서비스를 제공하는 소프트웨어


목적

처리능력 향상, 반환 시간 단축, 사용 가능도 향상, 신뢰도 향상 등

  • 처리능력, 반환시간, 사용가능도, 신뢰도는 운영체제의 성능을 평가하는 기준이 된다.

효율적인 자원 관리
안정적인 자원 보호
확장성 높은 하드웨어 인터페이스 제공
편리한 사용자 인터페이스 제공


운영체제 성능 평가 기준

  • 처리량/처리능력 (Throughput) : 일정 시간 내에 시스템이 처리하는 일의 양
  • 반환 시간 (Turn-around time) : 시스템에 작업을 의뢰한 시간부터 처리가 완료될 때까지 걸린 시간
  • 신뢰도 (Reliability) : 시스템이 주어진 문제를 정확하게 해결하는 정도
  • 사용 가능도 (Availability) : 시스템을 사용할 필요가 있을 때 즉시 사용 가능한 정도

📚 운영체제 기본

메인 프레임

메인프레임(mainframe, 큰 쇳덩이를 의미하는 빅 아이언/big iron으로 부름[1]) 또는 대형 컴퓨터는 통계 데이터나 금융 관련 전산업무, 전사적 자원 관리와 같이 복잡한 작업을 처리하는 컴퓨터이다.

이 용어는 원래 초기 컴퓨터들의 중앙 처리 장치와 메인 메모리를 갖춘 "메인 프레임"이라 불리는 대형 캐비넷들을 지칭하였다.[2][3] 나중에, 이 용어는 전력이 덜 드는 단위의 고급형 상용 머신들과 구별하기 위해 사용되었다.[4] 대부분의 대형 컴퓨터 시스템 아키텍처들은 1960년대에 성립되었지만 계속 발전하고 있다.

[출처] 위키백과 : https://ko.wikipedia.org/wiki/%EB%A9%94%EC%9D%B8%ED%94%84%EB%A0%88%EC%9E%84

메인 프레임은 대형 컴퓨터로 주로 큰 단체에서 연구나 조사를 목적으로 사용하는 컴퓨터이다. 초기 메인 프레임은 초기 컴퓨터의 대형 본체를 일컫는 단어였으나, 기술의 발전으로 본체가 소형화되면서 대형 컴퓨터를 의미하는 단어로 변화하였다.


배치 시스템 (Batch System)

메인 프레임에서는 초기 운영체제(운영체제라고 불릴 수 없는 단순 프로그램 실행 시스템)인 배치 시스템을 통해 프로그램을 실행시켰다. 메인 프레임은 동시에 하나의 프로그램만을 실행시킬 수 있고 그 프로그램이 종료되길 기다리다가 다음 프로그램을 실행시키는 방식으로 사용했다. 배치 시스템은 이처럼 프로그램이 끝나기를 기다리고 다음 실행시킬 프로그램을 메모리 영역에 올리는 역할을 하는 시스템이었기 때문에 Resident monitor라고 불렸다.

배치 시스템의 단점

CPU가 프로그램의 명령어를 실행하다가 disk에서 데이터를 읽어오도록 I/O 장치에 요청하게 되면 CPU는 데이터 읽기가 끝날 때까지 기다려야 하기 때문에 CPU 자원이 낭비된다는 단점이 존재했다.
이 단점을 보완하기 위해 이후 여러 시스템이 동작했다.

(이후에 공부할 내용)
https://haun25ne.tistory.com/33
https://hellouz818.tistory.com/6

  • 일괄처리 시스템
  • 다중처리 시스템
  • 시분할 시스템

📚 Kernel

커널은 OS의 모든 부분에 대한 기본 서비스를 제공하는 컴퓨터 운영체제의 핵심이자 가장 중요한 부분이며 컴퓨터에 속한 자원들에 대한 접근 중재

(이후에 보충 공부 하자!)

📚 커널 모드(Kernel mode)와 유저 모드(User mode)

유저 모드와 커널 모드는 모드 비트(mode bit)를 통해 구분되며, 이 비트가 1이면 유저모드, 0이면 커널 모드를 가리킵니다.

모드를 구분하는 이유는 I/O protection을 위함입니다.

보통 프로그램 코드가 실행되는 것은 유저 모드이고, 프로그램을 수행하다가 인터럽트에 걸려 운영체제가 수행될 때는 비트를 1로 변경시켜 커널모드로 전환합니다.

예를 들어, 프로그램을 실행하는데 파일을 읽거나 디스크에 쓰기 동작을 하는 경우 CPU는 직접 읽기/쓰기 동작을 실행하지 않고 운영체제에 요청(system call)을 보냅니다. 그럼 운영체제는 I/O 장치에 명령을 내리고 그 결과를 CPU에게 반환합니다.

이처럼 운영체제만 입출력에 접근 가능하도록 제한하기 위해 모드를 구분합니다.

(추가로 system call, interrupt 공부하기)

시스템 콜

사용자 모드에 있는 프로그램이 시스템 함수를 직접 호출할 수 없으므로 따로 프로그램이 커널 호출을 요청하는 시스템을 만들어서 커널이 처리해야할 일을 프로그램으로부터 받아서 처리

인터럽트

외부 인터럽트

  • 타이머 인터럽트 : 어떠한 프로세스가 수행중이다가 제한된 시간이 지나면 다른 프로세스와의 문맥교환 발생
    이때 제한된 시간이 지나면 타이머 인터럽트를 걸어서 다른 프로세스와의 문맥교환이 수행
  • I/O 인터럽트 : 마우스, 키보드 입력 등의 경우에 발생, 입출력 이벤트가 종료될 때까지 CPU는 다른 작업을 하다가 입출력이 종료되면 다시 돌아와 작업
  • 전원 이상 인터럽트: 어떤 이유로 전원 공급이 중단되면 CPU에 인터럽트를 걸어 현재 작업중인 프로세스 보호

내부 인터럽트

  • Exception 인터럽트(Trap) : 대표적으로 0으로 나누는 비정상적인 작업을 시도하거나, 오버플로우/언더플로우와 같이 자신의 메모리 영역 바깥에 접근하려는 시도 등 권한이 없는 작업을 시도할 때 처리하는 인터럽트
  • svc 인터럽트 : 시스템 콜이라고 불리는데 사용자 프로그램에서 하드웨어에 대한 접근이 필요할 때 사용자 모드에서 커널모드로 전환 필요
    즉, 사용자 프로그램에서 처리할 수 없는 부분을 운영체제에게 CPU를 양도하여 처리할 수 있게 커널모드로 전환하는 인터럽트

0개의 댓글