[정리] 운영체제란

shininghyunho·2021년 6월 3일
0

CS

목록 보기
7/8
post-thumbnail

운영체제가 뭔데?

컴퓨터를 동작하기 위해서는 여러가지 하드웨어들이 존재한다.

실질적인 계산을 처리하는 cpu
프로그램의 저장공간을 담당하는 메모리
데이터를 저장하는 저장매체

우리가 프로그램을 개발하면 이러한 하드웨어들을 적절히 사용해서 프로그램을 실행해야 하는데 어떻게 사용할까?
실제로 각 하드웨어들마다 동작 규칙들과 방식이 상이해 직접 관리하려면 실제 프로그램 개발보다 어려울거같다.

우리는 단순히 프로그램을 실행시키고싶을 뿐이다.

그래서 하드웨어에 대한 인터페이스를 제공하는것이 운영체제다.

운영체제는 크게 두가지 역할을 한다.
1. 응용 프로그램에게 하드웨어의 추상적인 모습을 제공한다.
2. 이러한 하드웨어 자원들을 관리하는 기능을 한다.

이러한 운영체제 역할 덕분에 우리는 오래걸리는 동영상 인코딩 작업을 하며 인터넷도하고 키보드로 채팅도 걱정없이 마음대로 할수있게된다.

운영체제는 어떻게 동작해?

커널모드, 사용자모드

컴퓨터에는 커널모드, 사용자모드라는 두가지 실행모드가 존재하는데, 운영체제는 커널모드에서 실행하는 소프트웨어라고도 볼수있다.

커널모드 - 모든 하드웨어 접근이 가능, 어떠한 명령도 가능, 운영체제가 존재하는 곳
사용자모드 - 일정 명령만 가능,기계의 제어에 영향을 미치거나 I/O 명령들은 실행x, 커널모드에게 요청해야함

우리가 실행한 프로그램은 유저모드에 해당된다. 그때 파일 읽기같은 하드웨어 자원을 쓰려면 시스템 콜을해서 운영체제에게 부탁해야한다.

사용자가 명령어를 통해 운영체제에게 서비스를 요청할 수 있는 프로그램이다. 이 쉘을 통해 사용자는 운영체제에 간접적으로 접근할 수 있게된다.

API(Application Programming Interface)

사용자가 아닌 응용프로그램도 운영체제에게 서비스를 요청할 수 있어야한다. 그때 사용할 수 있는것이 API다. API는 각 언어별로 운영체제 기능 호출을 해주는 인터페이스 함수인데, 대표적으로 C언어의 open()함수가 있다.

시스템 콜

응용프로그램이 운영체제 서비스를 요청하기 위해서 운영체제는 시스템 콜을 제공한다. 앞서 설명한 쉘을 통해서 운영체제에게 서비스를 요청하는것도 시스템 콜이다.

일반적으로 시스템 콜은 직접 사용하기보다는 시스템 콜을 사용하기 위한 각 언어별 라이브러리(API)를 사용해 간접적으로 사용된다.

예시

c언어에서 API를 호출할때 상황이다.

https://cbw1030.tistory.com/92

  1. 응용 프로그램은 사용자 모드에서 실행되다가
  2. 시스템 콜을 호출하면
  3. 사용자 모드에서 커널 모드로 진입하게된다.
  4. 그러면 커널모드에서 sys_open()이라는 시스템 콜 핸들러 함수가 호출되고
  5. 실제 읽기 읽기 작업이 진행된 후
  6. 다시 사용자 모드로 돌아와
  7. 프로세스를 진행하게된다.

출처

http://egloos.zum.com/rousalome/v/9993077
https://cbw1030.tistory.com/92
https://analysis-flood.tistory.com/130?category=782250

profile
shining itself

0개의 댓글