학교수업, CS/운영체제

운영체제의 개요

빨대도둑 2023. 4. 12. 10:59

공부 방법

  • 운영체제는 학교에서 배우는 과목입니다. 그래서 학교 수업을 한 내용을 바탕으로 정리한 것을 기록할 예정입니다. 
  • 공부하는 방법은, 일단 면접 문제나 핵심 내용을 찾아서 하나의 문장으로 적어두거나 질문으로 남기고 그에 대한 대답을 책에서 찾아 기록하는 형식으로 공부를 진행하고 있습니다. 
  • 또한 추후에 면접에서도 사용할 수 있게 정리하고 있습니다.(면접 질문은 시험이 끝나고 추가로 정리할 예정입니다.)
  • 시험 공부를 하면서 요약한 내용을 정리한 뒤 포스팅 하고 있습니다.

 

운영체제 

응용프래그램(ex 카톡)의 잘못된 동작으로 컴퓨터가 망가지는 것을 막기 위해 컴퓨터 전체를 관리하고 운영하는 소프트웨어=>window, ios, linux

하는일

- 컴퓨터를 관리하기 위한 기본적인 규칙과 절차를 규정하여 컴퓨터 내의 모든 하드웨어와 응용프로그램을 관리한다.

- 사용자가 자원에 직접 접근하는 것을 막고, 컴퓨터 자원을 보호하고 관리한다.

- 악의적인 사용자가 하드디스크의 아무곳에나 데이터를 저장해 다른 사람의 데이터를 지우거나 덮어쓰는 일이 발생하지 않게, 응용프로그램과 사용자에게서 모든 컴퓨터 자원을 숨긴다.

 

운영체제 구성

- 커널: 운영체제의 핵심 기능을 모아둔 것

- 인터페이스: 사용자에게 결과를 보여줌.

=>인터페이스를 이용해 커널에 명령을 내리고, 인터페이스가 그 결과를 전달한다

 

운영체제 역할

- 자원관리: 자원을 요청한 프로그램이 여러 개라면 적당한 순서로 자원을 배분하고 적절한 시점에 자원을 회수하여 다른 응용프로그램에 나누어 준다. 자원관리<=>효율성

- 자원보호: 악의적인 사용자나 미숙한 사용자에게서 자원을 보호한다. 프로그램이 남의 영역을 침범하면 데이터를 지울 수 있기 때문이다. 자원보호<=>안정성

 - 하드웨어 인터페이스 제공: 하드웨어 인터페이스가 자동으로 설치되게 함으로써 하드웨어를 종류에 상관없이 사용할 수 있게 해준다. 하드웨어 인터페이스 제공<=>확장성

- 사용자 인터페이스 제공: 사용자가 운용체제를 편리하게 사용하도록 지원한다. 인터페이스 제공<=> 편리성

 

운영체제 목표

- 효율성: 운영체제는 자원을 효율적으로 관리해야 한다. 일반적으로 운영체제의 크기를 최소화하고 운영체제가 사용하는 코드를 최적화해야 한다.

- 안정성: 모든 프로그램은 운영체제 위에서 작동한다고 볼 수 있다. 운영체제가 안정적이라면 사용자와 응용 프로그램의 안전 문제와 하드웨어적인 보안 문제를 처리할 수 있어야 하며, 시스템에 문제가 발생했을 때 이전으로 복구하는 결함 포용 기능을 수행해야 한다.

- 확장성: 운영체제는 다양한 시스템 자원을 추가하거나 제거하기 편리해야 한다. 즉 확장성이 좋아야 한다.

- 편리성: 사용자가 편리하게 작업할 수 있는 환경을 제공해야 하는 것도 운영체제의 목표이다.

 

시분할 시스템(운영체제 핵심)

멀티 프로그래밍: 컴퓨터를 효율적으로 사용하기 위한 연구 결과이다. CPU로 여러 작업을 동시에 실행하는 기술로, 한 번에 한 가지 작업만 가능한 일괄 작업 시스템에 비해 효율성이 뛰어나다. 또한 멀티프로그래밍 시스템에서는 CPU 사용 시간을 아주 잘게 쪼개어 여러 작업에 나누어 준다.

시분할 시스템: 여러 작업을 조금씩 처리하여 작업이 동시에 이루어지는 것처럼 보이게 하는 것이다. CPU 사용 시간을 잘게 쪼개어 여러 작업에 나누어 줌으로써 모든 작업을 동시에 처리하는 것처럼 보이게 한다. 이때 잘게 나뉜 시간 한 조각을 타임 슬라이스라고 한다. 시분할 시스템에서 여러 작업을 동시에 실행할 수 있다는 것은 한 사람이 여러 프로그램을 동시에 실행하거나 여러 사람이 동시에 작업할 수 있다는 의미이다.

멀티프로그래밍 수준: 시분할 시스템에서 동시에 실행되는 작업의 개수이다. 동시 작동 프로그램이 3개이면 멀티프로그래밍 수준 3이다.

 

운영체제의 구성

커널: 프로세스 관리, 메모리 관리, 저장장치 관리와 같은 운영체제의 핵심 구현 프로그램이다. 여러 개의 프로세스를 메모리에 배치하며 저장장치에 필요한 파일시스템을 만들고 관리한다.

 

커널 기능

- 프로세스 관리: 프로세스에 CPU를 배분하고 작업에 필요한 제반 환경을 제공한다.

- 메모리 관리: 프로세스에 작업 공간을 배치하고, 실제 메모리보다 큰 가상공간을 제공한다.

- 파일 시스템 관리: 데이터를 저장하고 접근할 수 있는 인터페이스를 제공한다.

- 입출력 관리: 필요한 입력과 출력 서비스를 제공한다.

- 프로세스 간 통신 관리: 공동 작업을 위한 각 프로세스 간 통신 환경을 지원한다.

 

커널 종류

- 단일형 구조: 커널의 핵심 기능을 구현하는 모듈이 구분 없이 하나로 구성되어 있다.

- 계층형 구조: 단일형 구조 커널이 발전된 형태로, 비슷한 기능을 가진 모듈을 묶어서 하나의 게층으로 만들고 계층 간의 통신을 통해 운영체제를 구현하는 방식이다.

- 마이크로 구조: 프로세스 관리, 메모리 관리, 프로세스 간 통신 관리 등 가장 기본적인 기능만 제공한다. 각 모듈은 세분화되어 존재하고 모듈 간의 정보 교환은 프로세스 간 통신으로 이루어 진다.  또한 모듈이 독립적으로 작동하기 때문에 하나의 모듈이 실패해도 전체 운영체제가 멈추지 않는다. 이식하기 쉽고 가벼워서 용량이 작은 시스템에도 적용할 수 있다.

인터페이스: 사용자와 응용 프로그램에 인접하여 커널에 명령을 전달하고 실행 결과를 사용자와 응용프로그램에 돌려준다.

'학교수업, CS > 운영체제' 카테고리의 다른 글

교착상태  (0) 2023.04.12
프로세스 동기화  (0) 2023.04.12
스케줄링  (0) 2023.04.12
프로세스/스레드  (0) 2023.04.12
버스, 버퍼, 캐시  (0) 2023.04.12