커널이 제공하는 서비스에 대해, 응용 프로그램의 요청에 따라 커널에 접근하기 위한 인터페이스 - 위키백과
쉽게 말해 프로세스가 운영체제(system)에게 운영체제 기능을 요청(call)하는 것
운영체제를 회사, 프로세스를 직원이라고 비유해보자. 직원이 회사가 관리하고 있는 자원( ex) 파일데이터 )을 사용하려고 할 때, 직원이 인가 없이 멋대로 사용할 수는 없다. 자원(파일 데이터) 사용 인가를 상부(운영체제)에 요청해야 할 것이다.
위와 같이 프로세스는 운영체제가 관리하는 모든 자원(네트워크, 디스크, 메모리 등)을 필요할 때, 항상 시스템 콜을 통해야만 한다.
시스템 콜은 운영체제 단에서 사용하라고 만든(운영 체제 기능을 호출하는) 코드(함수)이다. 즉 운영체제 기능을 사용할 수 있는 API이다.
Q. 정리해보면 셸은 커널을 감싸고 있으며, 우리가 입력한 명령어가 셸에 의해 해석되고, 해석된 명령어가 다시 시스템 콜이라는 인터페이스를 거쳐서 커널에 전달된다? 시스템 콜이 커널에 명령한다??
context switching
이라고 한다.멀티 프로세스
멀티 스레드
cf) 멀티 코어는 하드웨어 측면에서 실행단위를 병렬적으로 처리할 수 있도록 여러 프로세서가 있는 것이다.
2주차까지 나왔던 키워드들이 이제는 과제를 구현할 때 꼭 등장하는 것 같다. 키워드와 미션간 연관성이 강해지는 느낌이다. 당일 과제에 미쳐서 코드만 짤 게 아니라, 제시된 키워드는 그날 공부를 하고 넘어가도록 노력해야겠다.
운영체제에 대한 공부는 처음이다. 셸 구현 과제로 자연스럽게 셸이 무엇인지 공부하게 되었고, 이어서 커널, 시스템 콜에 대해 알아보았다. 공부하며 느낀 바가 있었는데, 운영체제는 키워드로 공부를 시작하더라도 그 키워드만 공부할 수는 없을 것 같다는 것이다(어느 공부가 그렇지 않겠냐만은).
오늘은 셸로 시작해서 운영체제 지식을 티끌만큼이나마 확장시켜봤는데, 앞으로도 운영체제 공부를 이렇게 조금씩이라도 해나가다보면 컴퓨터를 알고 쓰는 사람이 될 수 있겠다는 기대감이 생겨서 꽤 재미있었다. 틈틈히 운영체제 공부에도 시간을 들여보자.