본문 바로가기

리눅스

9장 네트워킹 - 2 통신 프로토콜은 네트워킹-1의 포스팅에서와 같이 계층 구조로 이루어져 있고 이는 계층 구조에서 그 흐름이 다양하게 분기될 수 있음을 의미합니다. 리눅스는 이를 지원하기 위해 층과 층 사이에서 제어가 전달될 때 자료구조를 이용한 간접 호출 방법으로 통신 프로토콜을 구현하였습니다. 즉 상위 측이 하위 층을 직접 호출하는 것이 아닌 하위 층이 그 시작 주소를 특정 자료구조에 등록함으로 상위 층에선 자료구조에 등록된 함수만을 간접 호출합니다. 리눅스에서 통신 프로토콜을 나타내는 대표적인 자료구조로는 아래와 같은 것들이 있고 그 위치 또한 리눅스 3.10버전에서 직접 찾아보았습니다. 계층 자료구조 이름 위치 위의 자료구조들은 아래의 그림을 거쳐서 이용됩니다. socket 자료구조는 중복입니다. 위쪽은 socket.. 더보기
9장 네트워킹 - 1 컴퓨터는 통신 프로토콜이라는 하나의 약속을 정해 서로 통신을 하게 됩니다. 네트워크에선 사람들의 이름처럼 구별할 수 있는 고유의 명칭이 필요합니다. 이를 NIC(Network Interface Card)마다 지정되어 있는 IP주소를 통해 표현합니다. 한 컴퓨터에서 다양한 사용자 프로그램들이 한 개의 NIC를 통해 동시에 통신하려는 경우엔 각각의 사용자 태스크를 구분하기 위해 고유의 번호가 필요해집니다. 이를 포트(port) 번호라고 합니다. 통신을 하기 위한 양측은 서로 IP주소와 포트 번호를 알고 있어야 하고 미리 정해진 약속, 즉 프로토콜을 지켜야만이 통신이 가능해집니다. 프로토콜은 계층 구조로 이루어져 있습니다. OSI 7 계층이라고 1학년 때 컴퓨터 개론들을 때, 정보처리 산업기사 공부할 때 들었.. 더보기
6장 인터럽트와 트랩 그리고 시스템 호출 1.인터럽트 처리과정 먼저 인터럽트란 주변 장치와 커널의 통신 방식으로 주변 장치나 CPU가 자신에게 발생한 사건을 리눅스 커널에게 알리는 메커니즘으로 외부 인터럽트와 트랩이 있습니다. 외부 인터럽트현재 수행중인 태스크와 관련 없는 주변장치에서 발생된 비동기적 하드웨어 사건(비동기적이란 뜻은 언제 발생할지 그 시간을 정확히 알 수 없다는 뜻을 말합니다.)트랩동기적으로 발생하는 사건, 0으로 나누기, 세그멘테이션 폴트인터럽트나 트랩이 발생하면, program counter를 정해진 특정 번지로 변경해 처리 루틴이 적절한 작업을 하게 됩니다. 리눅스는 외부 인터럽트와 트랩을 통일하게 처리합니다. 다양한 CPU에서 커널 내부구조의 수정 없이 인터럽트를 처리하기 위해 idt_table의 0~31까지는 트랩을 할.. 더보기
4장 메모리관리 - 2 4. 가상메모리 기법 리눅스에서 태스크를 관리하는 자료구조는 task_struct 자료구조 입니다. 이 task_struct 자료구조와 태스크의 가상 주소 공간의 관계에 대해 알아보겠습니다. 가상 메모리 관련 정보는 task_struct안의 mm필드에서 관리합니다. 이 필드는 크게 세 부분으로 나뉘어질 수 있습니다. vm_area_struct구조체태스크 구성, 같은 속성을 갖는 연속된 영역 region으로 관리pgd페이지 디렉터리의 시작점 주소가상메모리 구조 변수 vm_area_struct : 세그먼트의 시작주소, 끝 주소, region의 접근제어 플래그 변수 ┕ 이 세그먼트가 실제 실행 파일의 어느 위치에 있는지에 대한 정보를 vm_file와 vm_offset 변수로 관리하고, 페이지 폴트가 발생하면 .. 더보기
4장 메모리 관리 -1 메모리 관리 기법과 가상 메모리 물리 메모리의 한계를 극복하기 위해 가상메모리가 도입되었습니다. 프로그램들은 32bit 환경에서 232만큼, 즉 4GB 의 메모리 공간을 이용할 수 있게 되었습니다. 이는 물리적 4GB가 아닌 개념적인 공간으로 실제 동작에서는 필요한 만큼의 물리메모리를 제공합니다. 이렇게 가상메모리를 도입하므로 개념적으로 프로그램은 메모리 공간을 물리 메모리의 크기와는 상관없이 큰 공간을 이용할 수 있게 되었고, 실제 물리 메모리에선 필요한 만큼의 메모리 공간만 제공하므로 가능한 많은 태스크를 동시에 수행할 수 있게 되었습니다. 물리 메모리 관리 자료 구조 전체 물리 메모리의 정보를 표현하는 적절한 자료구조가 필요합니다. 2-1. NODE 리눅스에서 접근 속도가 같은 메모리의 집합을 뱅크.. 더보기
3장 태스크 관리 - 1 2장에서는 리눅스 커널의 내부 구조에 대해 간략하게 살펴보았습니다. 3장에선 태스크에 대해 배웁니다. 태스크란 '자원 소유권의 단위'를 말합니다. 프로세스란 동작중인 프로그램으로서 디스크에 저장되어있는 실행 가능한 형태의 파일입니다. ┕ 바이너리 기계 명령어, 수행에 필요한 자료들의 집합을 의미합니다. 실행파일 자체는 그저 디스크에 저장된 수동적인 존재로 프로그램이 동작하기 위해선 리눅스 커널로부터 CPU 등의 자원을 할당 받을 수 있는 동적인 객체가 되어야만 합니다. ┕ 이를 프로세스 라 부르고 프로세스는 커널의 적절한 스케쥴링에 의해 할당 받은 자신만의 자원을 가지고 CPU가 기계어 명령들을 실행함 에 따라 끊임없이 변화하는 동적인 존재를 말합니다. 프로세스에 대해 사용자 입장과 커널 입장에서 살펴보.. 더보기
2장 리눅스 커널 구조 운영체제란 무엇일까요? 저는 사용자에게 알맞은 추상화를 제공함으로써 사용자가 그 내부를 알 필요 없이 사용할 수 있도록 해주는 것이라고 생각합니다. 책에서는 '운영체제는 자원관리자이다'라고 정의하고 자원에 대한 정의를 풀어갑니다. 운영체제가 갖는 자원은 다음과 같습니다. 물리적인 자원CPU메모리디스크네트워크 추상적인 자원태스크세그먼트와 페이지파일통신 프로토콜, 패킷접근제어 커널은 물리적인 자원과 추상적인 자원을 관리하는 자원관리자의 역할을 합니다. 구체적으로 아래의 표와 같습니다. 태스크 관리자태스크의 생성, 실행, 상태전이, 스케쥴링, 시그널 처리, 프로세스간 통신(IPC)메모리 관리자물리 메모리 관리, 가상 메모리 관리, 세그먼테이션, 페이징, 페이지 부재 결함 처리파일 시스템파일의 생성, 접근제어,.. 더보기
1장 리눅스의 소개 1991년에 핀란드 헬싱키 대학에서 전산학을 전공하던 Linus Benedict Torvalds가 리눅스 0.0.1을 개발하여 발표함으로 시작된 리눅스는GNU 정신에 따라 완전히 공개로 배포되며 모든 프로그램의 소스 또한 공개 되있습니다.프로그램의 소스코드가 공개되면서 누구나 자유롭게 프로그램의 소스를 고칠 수 있어, 전세계 수 많은 사람들에 의해 개선, 개발되어 막강한 성능과 안정성을 가지게 되었습니다.Linux History는 아래의 위키백과 링크에 자세하게 나와 있습니다.http://en.wikipedia.org/wiki/Linux#History리눅스는 지금도 꾸준히 버전이 올라가고 있습니다.2013.07.05. 기준으로 stable 3.10이 2013.6.30. 4일 전에 나왔었네요.(출처 : h.. 더보기
리눅스 커널 내부구조 처음에는 『코드로 알아보는 ARM 리눅스 커널』 책을 선정했다가, 펼쳐보니까 이 책은 리눅스 커널에 대한 전반적인 이해가 있으신 분들께 어울리실 법한 책이라는걸 느꼈습니다. 전 아직 리눅스 커널은 모르고, 단지 운영체제 수업만 학교에서 들은 수준에 불과해서 이 책을 보더라도 단지 글만 읽는 수준이었습니다. 결국, 『코드로 알아보는 ARM 리눅스 커널』 책을 포기하고 보다 쉽다고 생각할 수 있는 책으로 『리눅스 커널 내부구조』 책과 함께 해보려고 합니다. 리눅스 커널 내부구조저자백승재, 최종무 지음출판사교학사 | 2008-09-26 출간카테고리컴퓨터/IT책소개'리눅스 매니아를 위한' 시리즈, 제2권 『리눅스 커널 내부구조... 이 책으로 결정하게 된 계기는 시스템 소프트웨어 스터디 그룹 사이트 www.ia.. 더보기