본문 바로가기

시스템프로그래밍

(22)
[리눅스] 리눅스 커널 소스코드 구성도 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는 오랜 역사를 가진만큼 이기종간 코드 호환성을 확실히 보장해 주지만,..
[시스템프로그래밍] IPC D-Bus란? D-Bus란? D-Bus란 프로세스간 통신(IPC)를 위한 시스템입니다. 오픈 소스 소프트웨어로써 리눅스 데스크톱의 프로세스 통신을 위한 수단으로 널리 사용되고 있습니다. 특히 KDE와 Gnome같은 데스크탑 환경에서 중요하게 사용합니다. 구조적으로는 몇가지 계층이 있습니다. - libdbus: Libdbus는 응용 프로그램간의 통신을 가능하게 하는 라이브러리입니다. - message bus damon: DBUS데몬은 실행 파일이며 libdbus를 기반으로 하여 제작되었으며 여러 개의 응용프로그램에서 연결이 가능합니다. 데몬은 버스에 연결된 하나 이상의 프로세스에 라우팅 및 루트 메시지를 처리합니다. - wrapper library 또는 binding: libdbus-glib, libdbus-qt 등 특..
[delphi] 델파이 개념 및 n-tier 구성 엠바카데로 델파이(Embarcadero Delphi Delphi)는 마이크로소프트 윈도우 응용프로그램을 위한 통합개발환경(고속 개발 도구)이며 원래는 볼랜드가 개발하였으나 지금은 엠바카데로사에서 소유하여 개발하고 있습니다. 오브젝트 파스칼 프로그래밍 언어로부터 파생된 언어인 델파이를 이용합니다. 델파이 컴파일러의 최신 버전은 2017년에 발표한 델파이 10 도쿄입니다. 엠바카데로 RAD 스튜디오 10 도쿄 (엠바카데로 RAD 스튜디오 10 도쿄)에 포함되어 있습니다. 델파이란?마이크로소프트 윈도우 응용프로그램을 위한 통합개발환경(고속개발도구)입니다. 오브젝트 파스칼 프로그래밍 언어로부터 파생된 언어입니다. 01. 오브젝트 파스칼(Object)파스칼에 객체지향 개념을 포함하여 발전시킨 프로그래밍 언어로 델..