Introduction to the Operating System
Understanding how your program interacts with the operating system (OS) is key to performing real-world tasks like reading input, writing files, and sending data over a network. Here’s how it works:
- Why Can't Programs Access Hardware Directly?
- Security and Stability: If any program could directly access hardware (e.g., the disk), it could bypass permissions and cause serious damage (e.g., corrupt the file system).
- The Role of the Operating System (OS):
- The OS manages resources and enforces permissions. When a program needs to access hardware, it asks the OS to do it via a system call (a special function call that hands control to the OS).
- System Calls vs. Library Calls:
- System Call: Transfers control to the OS to perform tasks on the program’s behalf.
- Library Call: A function from a library (like the C standard library) that your program can call. It may make system calls internally as needed.
- Example: printf and System Calls:
- When you call
printf
, it mostly runs library code (like scanning the format string). But when it needs to write the output, it uses the write system call to communicate with the OS and access the hardware.
- Why the Distinction Matters:
- Terminology Precision: In interviews and technical discussions, using the right terms (system call vs. library call) showcases your knowledge.
- Navigating Man Pages: Knowing whether a function is a system call (section 2) or a library function (section 3) helps you find the correct documentation quickly.
운영 체제에 대한 소개
프로그램이 운영 체제(OS)와 상호작용하는 방식은 실제 작업을 수행하는 데 있어 매우 중요합니다. 예를 들어, 입력을 읽거나, 파일을 작성하거나, 네트워크를 통해 데이터를 전송하는 작업 등을 말합니다. 여기에 핵심 내용이 있습니다:
- 프로그램이 하드웨어에 직접 접근할 수 없는 이유:
- 보안과 안정성: 모든 프로그램이 하드웨어(예: 디스크)에 직접 접근할 수 있다면, 권한을 무시하고 파일 시스템을 손상시킬 수 있습니다.
- 운영 체제(OS)의 역할:
- OS는 리소스를 관리하고 권한을 적용합니다. 프로그램이 하드웨어에 접근하려면, OS에 시스템 호출(특별한 함수 호출)을 통해 요청합니다.
- 시스템 호출 vs. 라이브러리 호출:
- 시스템 호출: OS에 제어를 넘겨서 작업을 요청합니다.
- 라이브러리 호출: 프로그램에서 호출할 수 있는 함수입니다. 필요시 내부적으로 시스템 호출을 수행할 수 있습니다.
- 예시: printf와 시스템 호출:
printf
를 호출하면 주로 라이브러리 코드가 실행되지만, 출력이 실제로 필요할 때는 write 시스템 호출을 사용하여 OS와 하드웨어 간의 소통을 합니다.
- 이 구분이 중요한 이유:
- 정확한 용어 사용: 면접이나 기술적 대화에서 시스템 호출과 라이브러리 호출의 차이를 정확히 이해하고 표현하는 것이 중요합니다.
- 매뉴얼 페이지 탐색: 함수가 시스템 호출(섹션 2)인지 라이브러리 함수(섹션 3)인지에 따라 올바른 문서를 빠르게 찾을 수 있습니다.