Blake Woo

리눅스 - 인터럽트

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

리눅스 - 시스템 호출

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

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

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

리눅스 - 프로세스 관리

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

컴파일러 - 형식언어

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

리눅스 파고 들기 - 개요

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

컴파일러 - 컴파일러 구조

컴파일러 구조 차후 세부적으로 다룰 것이지만 당장은 대략적인 컴파일러의 구조에 대해서 알아보겠다. 컴파일러는 크게 전단부와 후단부로 나뉘어져있다. 1. 전단부 소스 언어에 관계되는 부분으로 소스 프로그램을 분석하고 중간 코드를 생성하는 부분이다. 1) 어휘 분석(lexical analysis) 원시 프로그램을 읽어 들여 토큰(Token)이라는...

컴파일러 - 컴파일러의 개요

컴파일러 1. 프로그래밍 언어 어떤 일을 컴퓨터로 처리하기 위해서 일련의 과정을 기술할 때 사용되는 언어를 말한다. 이런 프로그래밍 언어는 저급 언어와 고급 언어로 나뉠 수 있다. 1) 저급 언어 모든 컴퓨터 구조에 관한 지식을 요구하며 프로그래머의 생각을 자연스럽게 표현할 수 있는 언어 구조를 갖추고 있지 못한 언어 자기 자신에 대한 고...