Blake Woo

리눅스 - 메모리 관리

메모리 관리 1. 페이지 커널은 물리적 페이지를 메모리 관리의 기본 단위로 사용한다. 메모리 관리 장치(MMU)는 페이지 단위로 처리한다. 이는 사용자 레벨에서만이 아니라 커널 역시 동일하기 때문에 MMU는 페이지 크기의 정밀도를 가진 시스템 페이지 테이블을 관리한다. 페이지 크기는 아키텍쳐별로 다르다. 하지만 대부분 32bit 아키텍쳐의 페이지 ...

리눅스 - 타이머

타이머 1. 개요 시스템 내에서 시간을 아는건 중요하다. 이는 주기적으로 처리해야하는 Task뿐만 아니라 예약된 Task를 처리할 때도 필요하기 때문이다. 커널이 시간의 흐름을 측정하는데 필요한 기능을 하드웨어에서 제공하는데, 이를 시스템 타이머라고 한다. 시스템 타이머는 전자시계나 프로세스 주파수와 같은 전기적 시간 신호를 이용해 동작하며 미리...

리눅스 - 인터럽트

인터럽트(Interrupt) 1. 개요 한국말로 직역하면 끼어듦, 가로막기이다. CPU가 프로세스를 실행 도중 즉각적인 처리가 필요한 일이 생길때 하드웨어 또는 소프트웨어에서 프로세서에 신호를 줘서 늦지 않게 이를 처리할 수 있도록 하는 것을 말한다. 종류에는 총 두 가지가 있다. 1) 하드웨어 인터럽트 키보드나 마우스와 같은 모든 하드웨어 입력이 ...

리눅스 - 시스템 호출

시스템 호출 1. 개요 시스템 호출은 하드웨어와 사용자 공간 프로세스 사이에 있는 계층이다. 이 계층은 3가지 역할을 한다. 사용자 공간에 하드웨어 인터페이스를 추상화된 형태로 제공한다. 시스템 보안 및 안정성을 제공한다. 프로세스별 가상 시스템 환경을 제공할 수 있다. 사실 추상화된 형태로 제공하기 때문에 보안과 안정성, 그리고 ...

리눅스 - 프로세스 스케줄링

프로세스 스케줄링 1. 개요 대부분의 운영체제가 그러하듯 리눅스 역시 시분할 처리를 통해 멀티태스킹을 구현한다. 시분할 처리란 cpu 동작시간이란 유한한 자원을 특정 시간만큼 쪼개어 각 프로세스에 할당하는 것이다. 이 cpu를 어떤 프로세스에 얼마나 오랫동안 할당 할 것인지 결정하는 방법론이 필요한데 이러한 것을 프로세스 스케줄링이라 한다. 이...

리눅스 - 프로세스 관리

프로세스 관리 1. 프로세스의 개요 프로세스는 실행중인 프로그램이다. 조금 더 정확히 말하자면 프로그램 코드를 실행하면서 생기는 모든 결과물이라고 할 수 있다. 할당된 메모리, 사용중인 파일, 프로세서의 상태 등 모든 자원을 포괄하는 내용으로 프로그램 코드만을 말하지는 않는다. 실행중인 스레드는 프로세스 내부에서 동작하는 객체이다. 각 실행중인...

컴파일러 - 형식언어

형식언어와 유한 오토마타 1. 형식언어 구조, 범위 등이 명확히 규정되어 있는 언어. 자연 언어의 문법 구조를 수학적 측면에서 형식화한 것으로서 자연 언어보다 훨씬 간단한 구조의 인공 언어로 볼 수 있다. 형식 언어의 이론은 알골 등의 프로그램 작성 언어에서 제반 문제로 응용되고 있다. 언어는 문법에 의해서 생성되고 정의된다. 이런 문법의 차이에 따...

리눅스 파고 들기 - 개요

리눅스 파고들기 1. 개요 가상화와 시스템 개발에 대해 공부하기 위해서 LINUX 커널을 공부할 예정이다. 큰 구조에 대한 공부부터 시작해 세부 구조까지 타고 들어갈 생각이다. 아무래도 어려운 부분이니만큼 매일 업데이트 되긴 힘들것 같으나 최대한 되는데로 업데이트 해볼 생각이다. 해당 포스팅을 진행하는데 참고할 책은 “리눅스 커널 심층분석”이라...