OS의 전체적인 구조
- Hardware (하드웨어)
- 컴퓨터의 물리적 자원 (CPU, 메모리, I/O 장치 등
- Operating System (운영체제)
- 하드웨어와 사용자 프로그램 사이의 중개자 역할 수행
- Services (운영체제가 제공하는 기능)
- 이 글에서 다루는 운영체제의 서비스(기능)으로 아래에 기술하겠다.
- System Calls (시스템 콜)
- 사용자 프로그램이 운영체제의 기능을 요청하는 인터페이스
- 예: open(), read(), write(), fork(), exec() 등
- User Interfaces (사용자 인터페이스)
- GUI (Graphical User Interface): 그래픽 기반 인터페이스
- Batch: 명령어 집합을 자동으로 실행
- Command Line: 텍스트 명령어를 통해 시스템과 상호작용
- User and Other System Programs (사용자 및 시스템 프로그램)
- 응용 프로그램, 시스템 도구, 컴파일러 등
- 운영체제를 통해 간접적으로 하드웨어 자원 사용
OS Services (기능)
운영체제는 프로그램과 사용자에게 애플리케이션을 실행하기 위한 환경과 서비스를 제공해준다.
사용자에게 도움이 되는 기능들의 집합을 제공한다.
- User Interface: 사용자 편의를 위해 OS를 쉽게 이용할 수 있도록 제공
- CLI (Command Line Interface)
- GUI (Graphical User Interface)
- Batch UI: 일련의 서비스 시퀀스를 한 번에 OS에 입력하는 방식 (과거 방식)
- Program Execution: 정적인 프로그램을 메모리에 로드하고 실행한다. 실행은 정상 종료 또는 비정상 종료로 마무리된다.
- I/O Operations: 프로세스가 필요로 하는 I/O 연산을 시스템 콜이라는 일관된 API로 처리한다.
- File-system Manipulation: 파일의 생성, 삭제, 복사, 이동, 권한 등을 관리한다.
- Communications: 한 프로세스에서 다른 프로세스로 데이터를 전달하는 IPC 메커니즘을 제공한다.
- Error Detection: 디버깅 기능 등을 통해 견고하고 오류에 강한 동작을 제공한다.
- Resource Allocation: 하드웨어 및 소프트웨어 자원의 할당/해제를 담당한다.
- Accounting: 리소스 사용량을 추적하고, 효율적인 자원 사용을 위한 정보 제공
- Protection and Security:
- Protection: 시스템 리소스 접근을 제어
- Security: 외부의 비정상적인 접근으로부터 시스템을 보호
User Operating System Interface
CLI (Command Line Interface)
커맨드 인터프리터는 커널 안에 있거나 시스템 프로그램으로 존재한다. 쉘(shell)이라는 시스템 프로그램이 다양하게 존재하며, 사용자 입력을 OS에게 명령으로 전달한다. 일부 명령은 내장되어 있고, 일부는 외부 프로그램을 호출한다.
GUI (Graphical User Interface)
더 사용자 친화적인 데스크탑 인터페이스이며, 터치스크린 인터페이스도 이에 포함된다.
System Calls
유저 프로세스는 OS 서비스를 사용하기 위해 API를 호출한다. API는 시스템 콜을 감싸는 함수로, 시스템 콜은 커널 내부에서 실행된다.
흐름:
User Process
↓
API (예: open(), write())
↓
System Call Interface
↓
Kernel Mode
↓
OS 서비스 수행
System Call의 구현
- 시스템 콜 번호를 통해 시스템 콜 테이블의 인덱스를 찾고, 해당 루틴을 커널 모드에서 수행한다.
- System Call Interface는 유저 모드와 커널 모드 사이에서 API 파라미터와 반환값을 중계한다.
System Call Parameter Passing의 방법
- 레지스터 사용 (단점: 길이 제약)
- 메모리/block/table에 저장하고 주소만 레지스터에 전달 (리눅스/솔라리스 사용)
- Stack을 이용하여 파라미터 전달
block이랑 stack은 길이 제약을 받지 않는다.
- User Program (사용자 프로그램)
- 시스템 콜에 필요한 파라미터 X를 메모리 어딘가에 저장해 둔다.
- 그런 다음, 시스템 콜을 호출하기 전에 X의 주소를 레지스터에 로드한다.
- 예: load address X, system call 13
- Register (레지스터)
- 사용자 프로그램은 X의 주소를 레지스터에 저장한다.
- 이 주소는 운영체제가 파라미터를 참조하기 위해 사용할 수 있는 간접 참조 방식을 제공함
- System Call 번호 전달
- system call 13을 통해, 운영체제는 시스템 콜 번호 13번이 호출되었다는 사실을 인식한다.
- 일반적으로 시스템 콜 번호는 운영체제가 호출할 함수를 결정하는 키 역할을 한다.
- Operating System (운영체제)
- 커널은 전달받은 시스템 콜 번호(13)에 해당하는 핸들러 코드로 진입한다.
- 그리고 레지스터에 저장된 주소 X를 통해 해당 주소에 위치한 파라미터를 참조한다.
- 이 파라미터를 이용해 시스템 콜 로직을 수행한다.
System Calls의 종류
프로세스 제어
- create/terminate process
- end/abort
- load/execute
- get/set process attributes
- wait event/signal event
- allocate/free memory
- dump memory if error
- debugger
- locks
파일 관리
- create/delete/open/close file
- read/write/reposition
- get/set file attributes
I/O 디바이스 관리
- request/release device
- read/write/reposition
- get/set device attributes
- logically attach/detach device
Information Maintenance (시스템 자원 관리)
- get/set time, date
- get/set system or process attributes
Communication
- create/delete communication connection
- send/receive message
- shared memory create/access
- transfer status
- attach remote devices
Protection
- control access
- get/set permissions
- allow/deny user access
윈도우와 유닉스 시스템의 시스템 콜 차이 예시
시스템 프로그램
운영체제와 함께 설치되어 응용 프로그램 개발과 실행을 돕는다.
시스템 콜을 직접 사용하거나 여러 콜을 조합한 프로그램.
- File 관리 및 수정 (예: 텍스트 에디터)
- Status 정보 조회 (예: 시간, 디스크 용량)
- 프로그래밍 언어 지원 (컴파일러, 디버거)
- Program loading and execution
- Communication
- Background services (디스크 체크, 에러 로깅 등)
- Application programs (예: explorer, 브라우저 등)
OS 설계 및 구현
- Policy: 무엇을 할 것인가?
- Mechanism: 어떻게 할 것인가?
예: Timer는 라운드 로빈 방식의 스케줄링 메커니즘으로 설정된다.
구현 언어:
- 저수준: 어셈블리
- 메인: C
- 기타: C++, Perl, Python, Shell Script 등
고수준 언어는 포팅이 용이하나, 성능은 떨어질 수 있다. 가상화 환경에서 다른 OS를 에뮬레이션하는 방식도 활용된다.
OS 구조
운영체제는 매우 큰 소프트웨어로, 구조를 설계하는 방식이 중요하다.
MS-DOS 구조
- 모든 컴포넌트가 하나로 뭉쳐 있음
- 인터페이스와 기능 구분 없음
UNIX 구조
- 시스템 프로그램과 커널로 나뉨
- 커널은 시스템 콜 인터페이스부터 하드웨어까지 포함
Layered Architecture
- OS 기능을 모듈화하고 계층적으로 구성함
- 상위 계층은 하위 계층의 기능을 사용함
Microkernel 구조 (예: Mach)
- 커널의 기능을 최소화하고 다른 기능을 사용자 모드로 이동시킴
- 유연성과 유지보수성 향상
반응형
'CS 지식 > 운영체제 (OS)' 카테고리의 다른 글
[운영체제] OS의 스케쥴링의 방식과 멀티레벨 스케쥴링, 스레드 스케쥴링 (PCS, SCS) - CPU Scheduling (0) | 2025.04.15 |
---|---|
[운영체제] OS의 스레드 종류(User, Kernel)와 관련 아키텍처 소개 (1) | 2025.04.13 |
[운영체제] OS의 프로세스(Process)의 개념과 구조, IPC 매커니즘 (0) | 2025.04.13 |
[운영체제] OS의 듀얼모드와 작업(Operations)의 종류와 관리 기능 소개 (0) | 2025.04.13 |
[운영체제] OS의 개념과 구조, 컴퓨터 시스템 아키텍처 소개 (1) | 2025.04.13 |
댓글