2026. 11. 4. 09:50ㆍComputer Science/Operating System

System calls는 Operating System에 의해 사용 가능한 서비스에 대한 Interface를 제공한다. 물론 이런 친구들은 대게 C나 CPP를 통해서 접근 가능하다. 정작 그 내용물은 로우레벨로 짜여있는게 함정이긴 한데. 쨋든 프로그램이 OS위에서 돌아가면서 당연하게도 System Call을 호출할 일이 많으며, 얘를 들어서 파일 생성/IO 등등이 있겠다.
Application Programming Interface

여튼 API는 System call을 Application을 짜는 프로그래머를 대신해서 호풀하게 된다. 물론 혹자는 "그냥 프로그래머가 직접 System Call을 Invoke하면 되는거 아님?"이라고 생각할 수 있는데, 직접 해보시라. 로우 레벨 단으로 쓰여진 코드를 직접 읽고 해보려면 ㅋㅋㅋㅋ 당신이 ChatGPT여도 힘들 것이다. 그리고 거기에 더해서 대다수의 프로그램은 특정 프로그래밍 언어로 짜여지는데, 얘는 RTE(Run-time Environment)환경에서 돌아가며 자체적으로 System call에 대한 interface를 제공한다. 즉슨 프로그래머가 System call이 어떻게 처리되던 신경 안쓰고 코딩에만 집중할 수 있다는 말.
참고로 OS에 파라미터를 넘기는 방법에는 크게 3가지가 있다. 첫번째로는 레지스터에 짬때리는 방법이며, 두번째로는 이걸로도 부족하면 블록/테이블/메모리/주소 등으로 짬때리는 방법이 있다. 그리고 세번째로는 Stack에 짬때리는 방법이 있다. (Function Call stacke을 생각해보자.)
Types of System Calls
System Call의 종류로는 크게 다음과 같이 들 수 있겠다 : Process Control, File Management, Device Management, Information Maintenance, Communications, Protection. (PFDICP)
- Process Control : Create/Terminate Process, Load/Execute, Get/Set Process attributes, alloc/free mem
- File Management : Create/Delete File, Open/Close/Read/Write, Get/Set file attributes
- Device Management : Request/release Device, R/W/X, Get/Set attributes
- Information : Time, Date, Process/file/device attributes ....
- Communication : Manage Connection, Send/Revice Messages, Transfer Status
- Protection : File Permission,
Find DPRK Hackers