Unix & Linux 59

이번엔 커널 모듈이다 ( Kernel Module)

https://tldp.org/LDP/lkmpg/2.6/html/c119.html 커널 모듈이란? 시스템 부팅 후 동적으로 로딩할 수 있는 커널 구성 요소 커널을 다시 컴파일 하거나 재부팅할 필요 없이 커널의 일부분을 교체하는 것이 가능 디바이스 드라이버 , 파일 시스템 , 네트워크 프로토콜 등이 모듈로 제공 그럼 일반 응용프로그램하고 뭐가 다른거니? 메인 함수가 없다 대신 커널에 로딩 및 제거 될 때 불러지는 함수가 존재하는데 아래와 같다. 로딩시 module_init() 언로딩시 module_exit() 리눅스 디바이스 드라이버의 특성 1) 커널 코드 디바이스 드라이버는 커널의 한부분이므로, 커널의 다른 코드와 마찬가지로 잘못되면 시스템에 치명적인 피해를 줄 수 있다. 2) 커널 인터페이스 디바이스 ..

Unix & Linux/Kernel 2022.02.14

나만의 리눅스 만들기 , 웰컴메시지 수정 ( etc/motd)

현재 리눅스의 웰컴 메시지 확인하기 cat /etc/motd ASCII Artgenerator 를 이용해 나만의 로고 만들기 http://www.network-science.de/ascii/ ASCII Generator www.network-science.de _ _ _ | | | | | | | | ___ ___| |__ __ _ _ __ __| |___ | |/ _ \/ _ \ '_ \ / _` | '_ \ / _` / __| | | __/ __/ | | | (_| | | | | (_| \__ \ |_|\___|\___|_| |_|\__,_|_| |_|\__,_|___/ 위와 같이 vi 에디터로 추가한 후 저장하면 끝

Unix & Linux 2022.01.29

멍멍이 소리, 콜 스택 ( Call Stack )

리눅스 커널 공부하다보면 마치 당연히 알아야하는 것처럼 콜스택 콜스택 한다. 뭔 개소리여~ 콜스택의 사전적인 말은 : 컴퓨터 프로그램에서 현재 실행 중인 서브루틴에 관한 정보를 저장하는 스택 자료구조이다. 콜 스택을 사용하는 목적은 여러 가지이지만, 주된 이유는 현재 실행 중인 서브루틴의 실행이 끝났을 때, 제어를 반환할 지점을 보관하기 위해서이다 기가막히게 어렵게 풀어 졌다. 실행중인 서브루틴에 관한 정보를 저장하는 스택 자료 구조? 안되겠다 단어로 쪼개서 이해해보자 서브루틴 이란 : 프로그램이 실행하는 Function 묶음 같은건가 그런것같다. 콜 이란 : 콜 말그래도 부른다 . 뭔가 부른다. 스택 이란 : 부르는걸 저장하는 구조 스택 ( 후입선출 , 데이터의 삽입과 출력이 리스트 한쪽에서만 이루어진..

Unix & Linux 2022.01.21

자꾸보는, 리눅스 커널 소스의 구조

커널 소스 구조는 눈에 잘익지 않는다 그래도 계속 되새겨 보자 ARCH - arm : 32bit arm 아키텍쳐 코드 - arm64 : 64bit arm 아키텍쳐 코드 - x86 : 인텔 x86 include 커널 코드 빌드에 필요한 헤더파일 Kernel 커널 핵심 코드가 있는 디렉토리 1) irq : 인터럽트 관련 코드 2) sched : 스케쥴링 코드 3) power : 커널 파워 매니지먼트 4) locking : 커널 동기화 관련 코드 5) printk : 커널 콘솔 관련 코드 6) trace : ftrace 관련 코드 mm 메모리 매니지먼트 , 가상메모리 및 페이징 관련 코드 아키텍쳐별로 동작하는 메모리 관리 코드는 arch/*/mm 아래 있습니다. drivers 모든 시스템의 다이바스 드라이버 ..

Unix & Linux 2022.01.21

원론적인 이야기를 해보자, 리눅스 인기 비결

리눅스가 인기있는 이유 무엇일까? 누구나 소스코드를 볼 수 있다. : 리눅스는 리눅스 커널과 그위에서 실행하는 리눅스 유틸리티로 구성 : 누구나 리눅스 소스코드를 볼 수 있다. 개방적인 오픈소스 프로젝트다 : 누구나 리눅스 프로젝트에 참가해 자신이 작성한 코드를 배포할 수 있다 : 소스를 분석하닥 버그나 논리적인 오류가 있으면 누구나 자신의 코드를 리눅스 오픈소스 프로젝트에 반영할 수 있다. 리눅스 커뮤니티의 힘이 막강하다. : 리눅스는 각 기능마다 메일링 리스트를 통해 빠른시간에 논의 - 커널 버그 - 커널 개선 패치 다양한 CPU아키텍쳐 지원 이정도만 알면 되겠다

Unix & Linux 2022.01.21

원론적인 이야기를 해보자, 리눅스의 역사 ( UNIX, LINUX ?? )

유닉스? 유닉스의 탄생 리눅스의 역사를 알기위해 유닉스의 탄생과정을 알아야한다. 왜?? 와이? 리눅스의 모태는 유닉스라고합니다. 컴퓨터가 발명된 이후로 한동안은 한가지 프로그램만 실행가능했다. ... 감이온다 멀티로하기위해서 운영체제가 필요? 맞을까? 역시다. 컴퓨팅속도가 빨라지면서 유닉스의 모태가 되는 '멀틱스' 운영체제 가 만들어진다. 즉 하나의 컴퓨터가 여러개의 프로그램을 실행하기 위해서 유닉스가 만들어졌다고 봐도 되겠습니다. 멀티태스킹과 멀티유저를 지원하는 운영체제 : 이과정에서 탄생한 것이 바로 유닉스 (UNIX ) 이정도로 마무리하기엔 누군가에게 설명하기 빈약하다. 최초의 유닉스는 어샘블리어로 제작되어있어서 아주아주 불편했다고한다. 1973년 최초의 유닉스가 완성 이때부터 유닉스는 C언어로 만..

Unix & Linux 2022.01.21

리눅스, 디바이스 드라이버 간단한 예제

참고사이트: https://reakwon.tistory.com/150 디바이스 드라이버(Device Driver) OS가 모르는 장치를 연결하면 컴퓨터는 드라이버를 설치하라고 요청할 것입니다. 컴퓨터는 이 장치가 무엇인지 모르기 때문입니다. 그래서 이장치를 동작할 때 어떻게 동작해야하는지에 대한 프로그램을 따로 설치해야 합니다. 알게모르게 설치되는 것이 디바이스 드라이버 시스템 콜이 호출되면 커널 영역 내부로 호출이 전달 됩니다. 커널 내부에 있는 가상 파일 시스템으로 전달, 디바이스 드라이버가 인터페이스를 통해서 하드웨어를 제어 합니다. 커널 영역이라함은 무엇? 일반 사용자가 접근할 수 없는 커널만의 영역을 말함 커널 영역 메모리를 참조하거나 데이터를 변경할 수 없다. 디바이스 드라이버가 커널 쪽에 ..