본문 바로가기

리눅스

(26)
[리눅스] 리눅스 커널 소스코드 구성도 arch/ - CPU 종속적인 부분, 각 처리기 마다 하위 디렉터리로 구성(arch/i386, arch/alpha, arch/arm...) - arch/arm/kernel/ 하드웨어 종속적인 커널 관리 루틴 트랩, 인터럽트 처리 루틴 문맥교환 루틴 장치 구성, 초기화 루틴 - arch/arm/mm 하드웨어 종속적인 메모리 관리 루틴 init/ - 하드웨어 독립적인 커널 초기화 루틴(start_kernel) - 태스크 0 (init_task or task[0]) 생성 - 태스크 1, 2, 3 등 데몬 프로세스 생성 kernel/ - 리눅스 커널의 가장 중심적인 디렉터리 (central section of the kernal) - 하드웨어 독립적인 커널관리 루틴(하드웨어 종속적인 커널관리 루틴은 arch/a..
[리눅스] 커널이란? 컴퓨터의 커널은 운영체제의 핵심입니다. 운영체제의 다른 모든 부분에 여러 기본적인 서비스를 제공합니다. 시스템 자원은 제한되어있지만 프로그램은 많기 때문에 커널은 프로그램의 수행상태인 프로세스 간의 보안 접근을 책임지는 소프트웨어입니다. 커널이 이러한 프로세스마다 얼마만큼의 자원을 사용해야 하는지 결정해야하는데 이것을 스케줄링이라고 합니다. 같은 종류의 컴포넌트에 대해 하드웨어는 다양하게 디자인 되어질 수 있습니다. 따라서 하드웨어에 직접 접근하는 것은 매우 복잡할 수 있습니다. 일반적으로 커널은 운영체제의 복잡한 내부를 감추고 깔끔하고 일관성 있는 인터페이스를 하드웨어에 제공하기 위해 추상화를 지원합니다. 이러한 하드웨어 추상화는 프로그래머가 하드웨어의 복잡한 접근을 고민할 필요없이 쉽게 개발하는 것을..
[리눅스] IPC의 종류와 특징 아래 그림처럼 Process는 완전히 독립된 실행객체입니다. 서로 독립되어 있다는 것은 다른 프로세스의 영향을 받지 않는다는 장점이 있습니다. 그러나 독립되어 있는 만큼 별도의 설비가 없이는 서로 간에 통신이 어렵다는 문제가 있게 됩니다. 이를 위해서 커널 영역에서는 IPC라는 내부 프로세스간 통신(Inter Process Communication)을 제공하게 되고, 프로세스는 커널이 제공하는 IPC설비를 이용해서 프로세스간 통신을 할 수 있게 됩니다. IPC의 2가지 표준(System V IPC와 POSIX IPC): System V IPC는 오래된 버전이고 POSIX IPC는 비교적 최근에 개발된 표준입니다. System V IPC는 오랜 역사를 가진만큼 이기종간 코드 호환성을 확실히 보장해 주지만,..
[리눅스] RAID란? RAID의 종류와 구성방식 RAID는 왜? 사용되나서버의 사용자가 서버 운영에 있어 가장 당혹스러울 때는 하드디스크의 장애로 인한 DATA 손실일 것입니다. 하드디시크는 사실상 소모품으로 분류되며 I/O가 많은 서버에는 고장이 잦은 것이 당연하다고 볼 수 있습니다. 하지만 서버에 저장되는 데이터의 경우 손실 또는 유출 되었을 때 치명적인 것이 대부분일 것으로 대표적으로 은행과 같은 금융, 군사적 목적의 데이터가 있을 것입니다. 이로 인해 백업이 절대적으로 필요한 경우가 있고 또한, 여분의 디스크가 있어 용량을 증설하려고 할 때 데이터 손실 없이 증설이 필요한 경우가 있습니다. 그래서 많은 서버 관리자는 RAID 구성을 통해 하드디스크의 가용성을 높이거나 서버 데이터의 안정성을 확보해야 합니다. RAID란?RAID는 Redundan..
[시스템프로그래밍] IPC D-Bus란? D-Bus란? D-Bus란 프로세스간 통신(IPC)를 위한 시스템입니다. 오픈 소스 소프트웨어로써 리눅스 데스크톱의 프로세스 통신을 위한 수단으로 널리 사용되고 있습니다. 특히 KDE와 Gnome같은 데스크탑 환경에서 중요하게 사용합니다. 구조적으로는 몇가지 계층이 있습니다. - libdbus: Libdbus는 응용 프로그램간의 통신을 가능하게 하는 라이브러리입니다. - message bus damon: DBUS데몬은 실행 파일이며 libdbus를 기반으로 하여 제작되었으며 여러 개의 응용프로그램에서 연결이 가능합니다. 데몬은 버스에 연결된 하나 이상의 프로세스에 라우팅 및 루트 메시지를 처리합니다. - wrapper library 또는 binding: libdbus-glib, libdbus-qt 등 특..