전체 글 14

OS가 관리하는 Clock & Hardware Clock

1. 서론프로세스는 클락(Clock)을 통해서 시간을 알 수 있다. 이는 상대시간일 수 도 있고 절대시간 일 수 도있다. 운영체제는 상대시간은 주로 Monotonic Counter, 절대 시간은 Wall Clock을 활용하여 관리한다. 이번 글에서는 운영체제가 관리하는 시간의 종류와 관리 방법에 대해서 간단히 정리하고자 한다.2. OS가 관리하는 시간의 종류운영체제가 관리하는 시간은 일반적으로 다음 세 가지로 구분된다.2.1 Wall time (Real time)실제 세계의 시간과 일치하며, 사용자가 변경이 가능하다.사용자에게 시간을 제공하거나 사용자의 행동을 시스템 내부에서 기록할때 적합하다.절대 시간을 측정할때 적합하다캘린더에 활용하는 시간백엔드 서버의 로그에 표함된 시간2.2 Monotonic ti..

CS 2024.12.15

표준 I/O 라이브러리의 등장 배경: 시스템 콜 성능 최적화

1. 서론시스템 프로그래밍 수업을 통해 표준 I/O 라이브러리의 등장 배경을 학습하게 되었다. 이는 시스템 콜을 직접적으로 사용할 때 발생하는 성능 저하를 개선하기 위함이다. 이 문제의 원인을 깊이 이해하면 데이터베이스 등 다양한 I/O 작업과 관련된 코드를 작성할때 도움이 될 것 같아 정리를 하게 되었다.2. 시스템 콜을 직접 사용할때 문제2.1 Alignment 문제Alignment 문제는 운영체제가 파일을 Block 단위로 I/O하기 때문에 발생하는 문제이다. 대부분의 파일 시스템과 디스크는 블록(Block) 단위로 데이터를 읽고 쓰며, 그 단위는4KB 또는 그 배수이다. 즉 프로그래머가 임의의 버퍼에 read 혹은 write 하라는 코드를 작성하면 이 버퍼의 시작 주소 및 크기가 Block의 시작..

CS 2024.12.08

OS의 I/O Device 추상화 & Block I/O & Non-Block I/O: Multiplexing

시스템 프로그래밍시간에 배운 개념중 개인적으로 중요하다고 생각한 개념을 정리해보았다.1. OS의 I/O Device 추상화1.1 OS는 I/O Device를 File 이라는 개념으로 추상화한다.운영 체제는 다양한 입출력 장치를 일관된 방식으로 다루기 위해 I/O Device를 파일이라는 개념으로 추상화한다. 이를 통해 운영 체제는 키보드, 파이프, 스토리지, 네트워크 소켓 등 모든 I/O 장치를 동일한 방식으로 다룬다. 예를 들어, 프로그램이 하드 디스크에서 데이터를 읽는 작업과 네트워크에서 데이터를 읽는 작업을 동일한 방식으로 처리할 수 있다. 이 덕분에, 응용 프로그램 개발자는 하드웨어 세부 사항을 신경 쓰지 않고도 입출력 작업을 처리할 수 있다. 운영체제는 “파일 디스크립터”라는 모든 I/O Dev..

CS 2024.12.01