시스템 콜(Operating System Services)

sun202x·2023년 1월 16일
0

운영체제

목록 보기
6/23
post-thumbnail

해당 게시글은 kocw에서 제공하는 금오공과대학교 최태영 교수님의 무료 강의를 공부하고 정리하기 위해서 만들어졌습니다.

시스템 콜

  • 어플리케이션이 운영체제에게 어떻게 서비스를 요청할지,
  • 운영체제는 어떻게 서비스를 처리하고 창구를 열어줄지 결정하는 것
  • 이 시스템콜은 앞에서 봤던 software interrupt 라고 할 수 있다.
  • 사용자가 하드웨어에게 무언가 요청하려면
    • 반드시 어플리케이션을 통해 운영체제에게 서비스를 요청하고 하드웨어에 접근해야 한다.
    • 그렇게 하는 이유가 운영체제가 하드웨어에 접근하는 방법이 인터럽트를 통해서 밖에 없기 때문이다.
    • 이전에 배웠듯이 인터럽트 쪽은 커널모드, 어플리케이션은 유저모드로 실행된다.
    • 사용자가 인터럽트를 걸려면 인터럽트를 거는 코드를 실행하도록 운영체제에게 요청해야 한다.

User Interface(UI)

  • 사용자가 인터럽트 코드 실행을 요청하려면 UI(user interface)를 통해서 해야 한다.
    • graphic user interface(window ui 등), cli(command line), batch
  • UI를 통해 사용자는 어플리케이션을 실행시키면 운영체제는 다음과 같은 기능을 제공해준다.
    • 파일을 열거나, 닫고 어떤 기능을 수행시킨다.
      • 이러한 역할을 하는 것을 I/O operation이라고 한다.
    • 소스를 카피한다던가, 지우는 기능을 수행시킨다.
      • user interface에서 처리한다.
    • 통신 기능을 사용하여 통신 기능을 수행시킨다.
      • 채팅을 한다던가 웹 브라우저를 사용하는 것 모두 통신 기능을 사용하는 것이다.
      • 운영체제에서 이러한 기능을 제공한다.
    • 사용자의 행동에 맞는 오류를 보여준다.
      • 사용자 행동에 맞는 오류를 출력한다.

자원 할당(Allocation)

  • 여러 사용자가 자원을 사용할 때 충돌이 일어나지 않도록 할당하는 것
    • 사용자가 빈 공간이 필요할 때 하드디스크에서 빈 공간을 확보하여 제공하는 것
    • cpu를 얼마나 사용할지 결정하는 것
    • 메인 메모리의 사용을 결정하는 것
  • 사용자는 이러한 기능을 잘 모르게 된다.

Accounting

  • 사용자가 자원을 얼마나 사용했는지 관리를 하는 것
  • cpu를 얼마나 사용했는지 관리
  • 언제 접속 했고, 최근에 로그아웃 한게 언젠지 관리
  • 하드 디스크 사용했다면, 사용자가 파일을 만들어 하드디스크의 얼만큼을 사용했는지 관리
  • 혼자서 사용한다면 Accounting이 필요 없겠지만, 하나의 시스템을 여러 사용자가 사용한다면 반드시 필요하다.

Protection and Security

  • 내부, 외부에서 자원을 보호해야 한다.

CLI(Command Line Interpreter)

  • Command Line Interface 라고도 한다.
  • 사용자가 CLI를 통해 운영체제에게 요청하고 그 결과를 UI로 나타낸다.
  • 키보드 입력을 통해 요청한다.
    • 보통 shell이라고 부른다.
  • CLI를 통해 사용자가 내리는 명령어는 크게 두가지가 있다.
    • built-in Command
      • 내장 커맨드
      • CLI가 원래 가지고 있던 커맨드
    • Program(실제 실행하는 프로그램)
      • 몇몇 기능은 내장된 프로그램이다.
  • 초창기에는 CLI를 통해 기능을 수ㅎ애했다.

GUI(Graphic User Interface)

  • 일반적인 window 그래픽 ui
  • 대표적인 입력 장치가 마우스 이다.
  • 이전 CLI에서는 사용자가 명령을 내리기 위해 특정 기능을 기억해야 했지만,
  • GUI에서는 수행할 수 있는 기능들을 보여줌으로써 한결 편하게 사용할 수 있게 되었다.
  • 최초 GUI를 제공한 곳은 Xerox PARC 연구소이다.
    • 현대 컴퓨터에 엄청난 영향을 미친 연구소이다.
    • VLSI(Very Large Scale Integration),
      • 초 고밀도 집적회로를 만드는 기술
      • cpu 같은 것들이 여기에 속한다.
    • Laser Printer, Ethernet 등
  • 현대 OS는 GUI를 제공하면서 CLI도 사용할 수 있도록 제공해준다.
  • 모바일에서는 touch screen을 통해 GUI를 제공해준다.

시스템 콜과 API

  • C언어 같은 경우에는 아예 System Call 함수를 통해 직접 명령을 수행할 수 있다.
  • Application Programming Interface(API)
    • 어플리케이션을 만들고 싶을 때, 어플리케이션을 프로그래밍하기 위해서 os에서 제공해주는 함수를 API라고 한다.
    • System call을 쓰려면 불편하기 때문에 API를 제공하여 System call을 사용하기 편하게 해준다.
  • 일반적인 사용자들은 API위에 있는 C library를 주로 사용하게 된다.
    • 사용자가 C언어 상에서 scanf를 사용하면(C library)
    • 내부에서 read를 호출하게 되고,(API)
    • read 내에서는 system.call을 호출하게 된다.
    • system.call이 걸리면 인터럽트 128이 걸리고,(int 128)
      • system.call은 반드시 인터럽트 128을 걸게 되어있다.
      • 이 때, 인터럽트가 걸린 함수를 기억하고(read)
      • 실제 인터럽트 핸들러가 수행 될 때,
      • 레지스터에 기억된 함수를 읽어와 수행하게 된다.
    • kernel로 내려가서 인터럽트 핸들러를 수행한다.(trap or software interrupt)
  • 기본적으로 쓰이는 API는 세가지가 있다.
    • windows에서 쓰는 Win32 API
    • unix 계통에서 쓰는 POSIX API
      • linux, mac os 포함
    • Java API
      • Java virtual machine을 사용하기 위해 제공
  • 보통 API와 System.call을 구분하지 않고 쓰일 때가 있는데, 일반적으로 큰 차이가 없기 때문이다.
profile
긍정적으로 살고 싶은 개발자

0개의 댓글