Day11

피오·2021년 11월 15일
0
post-thumbnail

셸과 커널

셸(Shell)

  • 사용자가 입력한 명령을 해석하는 프로그램.
  • 커널을 감싸고 있으며, 우리가 입력한 명령어를 해석해서 커널이 이해할 수 있는 방식으로 커널에게 전달한다.
  • bash, zsh와 같은 다양한 셸 프로그램들이 존재한다(취사선택 가능)

커널(Kernel)

  • 운영체제의 일부로서 하드웨어와 프로세스 운용을 위한 소프트웨어.
  • 응용 프로그램들의 실행 환경을 이루고 운용하는 것.
  • 시스템 기동시 boot프로그램에 의해 구동되며 주기억장치(메모리)에 올라간다.
  • 응용프로그램이 하드웨어에 접근할 수 있게 해준다.
  • 셸이 껍데기라면 커널은 운영체제의 코어, 핵심이다.

시스템 콜

커널이 제공하는 서비스에 대해, 응용 프로그램의 요청에 따라 커널에 접근하기 위한 인터페이스 - 위키백과

  • 쉽게 말해 프로세스가 운영체제(system)에게 운영체제 기능을 요청(call)하는 것

  • 운영체제를 회사, 프로세스를 직원이라고 비유해보자. 직원이 회사가 관리하고 있는 자원( ex) 파일데이터 )을 사용하려고 할 때, 직원이 인가 없이 멋대로 사용할 수는 없다. 자원(파일 데이터) 사용 인가를 상부(운영체제)에 요청해야 할 것이다.
    위와 같이 프로세스는 운영체제가 관리하는 모든 자원(네트워크, 디스크, 메모리 등)을 필요할 때, 항상 시스템 콜을 통해야만 한다.

  • 시스템 콜은 운영체제 단에서 사용하라고 만든(운영 체제 기능을 호출하는) 코드(함수)이다. 즉 운영체제 기능을 사용할 수 있는 API이다.

셸, 커널 그리고 시스템 콜

Q. 정리해보면 셸은 커널을 감싸고 있으며, 우리가 입력한 명령어가 셸에 의해 해석되고, 해석된 명령어가 다시 시스템 콜이라는 인터페이스를 거쳐서 커널에 전달된다? 시스템 콜이 커널에 명령한다??



프로세스와 스레드

프로세스

  • 프로세스는 프로그램이 실행된 것이다. 프로그램은 소스 코드로 이루어진 아직 실행안된 파일.
  • 한 프로세스가 실행되기 위해 cpu를 점유하고 있으면(실행상태) 다른 프로세스는 실행상태에 있을 수 없다(준비상태). 그래서 다수의 프로세스를 동시에 실행하기 위해 여러 프로세스를 짧은 텀을 반복하면서 전환해서 실행한다. 이를 context switching이라고 한다.

스레드

  • 스레드는 한 프로세스 내에서 나뉘어진 하나 이상의 실행 단위(?)이다.

멀티 프로세스와 멀티 스레드

  • 멀티 프로세스

    • 프로세스는 독립적이기 때문에 IPC(Inter Process Communication)를 통해서 통신을 해야 한다.
    • 자원이 소모적이고 메모리를 더 차지한다.
    • 컨텍스트 스위칭 비용이 크다.
    • 독립적이기 때문에 동기화 작업이 필요하지 않다.

  • 멀티 스레드

    • 스레드끼리 긴밀하게 연결되어 있다.
    • 공유자원이 많으므로 동기화 신경 써야함.
    • 공유된 자원으로 메모리가 효율적이고 통신 비용도 절감된다.
    • 컨텍스트 스위칭 비용이 적다.

cf) 멀티 코어는 하드웨어 측면에서 실행단위를 병렬적으로 처리할 수 있도록 여러 프로세서가 있는 것이다.



회고

2주차까지 나왔던 키워드들이 이제는 과제를 구현할 때 꼭 등장하는 것 같다. 키워드와 미션간 연관성이 강해지는 느낌이다. 당일 과제에 미쳐서 코드만 짤 게 아니라, 제시된 키워드는 그날 공부를 하고 넘어가도록 노력해야겠다.

운영체제에 대한 공부는 처음이다. 셸 구현 과제로 자연스럽게 셸이 무엇인지 공부하게 되었고, 이어서 커널, 시스템 콜에 대해 알아보았다. 공부하며 느낀 바가 있었는데, 운영체제는 키워드로 공부를 시작하더라도 그 키워드만 공부할 수는 없을 것 같다는 것이다(어느 공부가 그렇지 않겠냐만은).

오늘은 셸로 시작해서 운영체제 지식을 티끌만큼이나마 확장시켜봤는데, 앞으로도 운영체제 공부를 이렇게 조금씩이라도 해나가다보면 컴퓨터를 알고 쓰는 사람이 될 수 있겠다는 기대감이 생겨서 꽤 재미있었다. 틈틈히 운영체제 공부에도 시간을 들여보자.



참고

profile
블로그 이전했습니다. https://pzbg.tistory.com/

0개의 댓글