Linux Kernel
-
임시 - Linux Kernel - 4장 : Process management( 1 ) ( 고건 교수님 OLC 강의 )Linux Kernel 2024. 7. 4. 22:12
4장 - Process management ( 1 ) 지난 3장에 이어서 좀 더 알아두어야 할 점은kernel stack이 어떻게 변화되는가?context_switch( ) 에서의 내부 로직이다.부모 프로세스가 fork( )를 하게 되면 부모 프로세스의 커널 스택에는 fork( )가 들어가게 되고,PCB와 이미지가 복제되면서 자식 프로세스의 커널 스택에도 fork( )가 들어가게 된다. 부모가 fork( )에 대해 return을 하게 되면, 커널 스택에서 fork( )는 사라지게 된다. 부모 프로세스가 fork( )를 한 이후에, wait( ) 함수를 호출하면서 본인의 cpu 점유를 넘겨줄 때,wait( ) 함수는 context_switch ( ) 함수를 호출하게 된다.( 더 정확히는 wait → s..
-
커널 모듈 개발의 기초 - Linux 커널 모듈 프로그래밍 가이드(5.x) 참고Linux Kernel 2024. 7. 2. 18:15
5장 - 커널 모듈 개발의 기초5-1. 모듈 시작 & 종료프로그램 : main()함수로 시작. ( 진입함수가 main()이다.)커널 모듈 : “init_module” 또는 “module_init 호출로 지정한 함수”로 시작 ( 모듈 진입 함수 )모듈 진입 함수가 실행되면,모듈이 제공하는 기능을 커널에 알리고, 필요할 때 모듈의 기능을 실행하게끔 커널 설정.이후, 진입함수가 리턴된다.모든 모듈은 “cleanup_module” 또는 “module_exit 호출로 지정한 함수”를 호출하며 종료한다.모든 모듈은 진입 함수와 퇴출 함수가 있어야 한다.5-2. 모듈에서 사용가능한 함수pr_info() 함수의 경우 : 표준 입출력 라이브러리 포함 x.모듈이 “insmod” 또는 “modprobe”를 실행하면 symb..
-
임시 - Linux Kernel - 3장 : System Call(2) ( 고건 교수님 OLC 강의 )Linux Kernel 2024. 7. 1. 20:06
3장 - system call ( 2 ) fork()는 parent를 그대로 복사한다.PCB, 이미지 모두 그대로 복사한다.exec()은 복사한 상태 위에서 overwrite를 하는 것이다.wait ( 2 ) system call (커널은 메모리의 어느 영역이든 접근할 수 있다는 점을 기억하자!) 어떤 프로세스가 wait 함수를 호출하면커널이 해당 프로세스를 block한다. ( = cpu를 빼앗는다.(preemptive) ) 이후 커널은 ready 리스트에서 우선순위가 높은 프로세스의 PCB를 바탕으로pc(program counter)값을 찾아 그리로 jump한다. ( cpu를 할당해준다. ) 아래 코드에서는 parent는 wait 함수를 호출했는데,이는 child가 끝날 때까지 기다렸다가 신호가 ..
-
임시 - Linux Kernel - 2장 (2) : Process Management ( 고건 교수님 OLC 강의 )Linux Kernel 2024. 6. 30. 18:02
2장 - Process Management : Level 1OS 가 해야할 일은 밑으로는 hardware를 관리해야하고 (자원 관리 )위로는 프로그램이 잘 동작하도록 지원해줘야 한다. 따라서, 하드웨어 하나마다 대응되는 internal 자료 구조를 가지고 있어야한다.또한, 프로세스 마다 대응되는 자료구조가 있어야 OS 에서 관리할 수 있다.이때 사용되는 자료구조가 PCB이다. PCB는 Process Control Block 의 약자이다.PCB와 하드웨어에 대응되는 자료구조는 metadata를 가진다. 프로세스를 관리하기 위해 OS에서 관리해야 하는 metadata에는 어떤것이 있을까? PCB안에는 어떤 정보가 있는가? - PID, priority, 상태, 디스크 어디에 있는가, 메모리 어디에 있..
-
임시 - Linux Kernel - 2장 (1) : System Call (1) ( 고건 교수님 OLC 강의 )Linux Kernel 2024. 6. 30. 17:56
2장 - System Call( 1 ) user program을 아래와 같이 코드를 짰다고 하자.MY_ CODEmain(){ add(); sub(); printf();}LIBRARYprintf(3) { write(2); ...} printf( )는 library function이고library에서 다시 write 시스템 콜 함수를 부르게 된다. library function은 매우 많지만(putc, puts, printf 등)시스템 콜은 하나뿐이다. (write! ) read도 마찬가지로 library function은 매우 많지만 (scanf, getc 등)시스템 콜은 read 뿐이다! 모든 IO library function 은 반드시 그 안에 스스로 IO instruction을 가질 수 없다!커..
-
임시 - Linux Kernel - Introduction ( 고건 교수님 OLC 강의 )Linux Kernel 2024. 6. 29. 23:36
1장 - Introduction ( 임시 )강의는 Linux Kernel Development - 책을 바탕으로 함. - 입문서라고 함.OS를 하나의 프로그램으로 만든 것이 아니라 여러 개로 잘게 나눔→ 부팅하는 데, 시간을 줄일 수 있다.kernel, shell, utility 로 나눌 수 있다.커널utilityshell다시 정리하면, utility를 부르는 3가지 단어는 아래와 같다.utility, command, job .filestandard file부팅을 하면 맨 처음에kernel a.out 이 올라온다. (커널 프로그램이 올라온다. )유저가 터미널에 전원을 공급하면,그 터미널 위에서 shell 프로그램이 올라온다. (sh a.out)shell에서는 command를 입력받을 때까지 기다린다.키보..