Blake Woo

리눅스 - 시스템 호출

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

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

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

리눅스 - 프로세스 관리

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

컴파일러 - 형식언어

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

리눅스 파고 들기 - 개요

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

컴파일러 - 컴파일러 구조

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

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

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

컴퓨터 구조 - CPU 구조 - 레지스터

Register 산술적/논리적 연산이나 정보 해석, 전송 등을 할 수 있는 일정 길이의 정보를 저장하는 중앙 처리 장치(CPU) 내의 기억 장치. 저장 용량에는 제한되어 있으나 주기억 장치에 비해서 접근 시간이 빠르고, 체계적인 특징이 있다. 컴퓨터에는 산술 및 논리 연산의 결과를 임시로 기억하는 누산기(accumulator), 기억 주소나 장치의 주...