ESL 연구실 활동/Kernel of Linux 5

리눅스커널강의 7~9강 (작성중)

인터럽트의 두 종류 : data structure, function (data structure 에 관한 인터럽트 먼저 . . .) # IRQ line의 상태 - IRQ_DISABLED - 라인을 완전히 끊어놓은 상태 - IRQ_WAITING - 라인 enable 상태. 하지만 아무작업도 하지 않는 상태 - IRQ_PENDING - 요청된 상태지만 커널이 대기하라는 상태 - IRQ_INPROGRESS – kernel is executing ISR --> 모든 라인마다 네가지 상태가 존재 status -> handler -> lock ->action --> per device function # do_IRQ() , handle_IR..

리눅스커널강의 5~6강

복습! 프로세스와 스레드 - 프로세스 : 부모, 자식 프로세스 처럼 그대로 같은 코드를 실행하는 형태 - 스레드 : 같은 코드를 그대로 복사하는 형태가 아닌 유용하게 복사해 사용하는 형태 # Process state – TASK_RUNNING(ready or running) – TASK_INTERRUPTIBLE(wait) – becomes runnable if signal arrives – TASK_UNINTERRUPTIBLE(wait) – not respond to signal – TASK_ZOMBIE – TASK_STOPPED : PCB만 남은 상태, parent만이 없앨 수 있음 # Timeslice 다른 (급한)프로세스에게 CPU를 뺏겨서 실행하지 못하고 남은 시간 Timeslice가 0이면 re..

리눅스커널강의 3~4강

# pid가 뜻하는 값 pid 0 : parent proces # wait, exit 시스템콜에 따른 전환 P1. 사용자의 명령어를 실행하기 위해서, fork를 통해 새로운 프로세스 생성. 부모쉘의 PCB와 쉘을 복사 (cpu가 부모쉘에 있는 상황) C1. 자식 쉘이 ready queue에서 기다리는 상태가 됨 P2. wait() system call로 부모 프로세스가 cpu를 반납하고 sleep C2. ready queue에서 생성된 자식프로세서가 기다림 C3. (부모 쉘이 sleep으로 wait하고 있을때) 자식프로세스의 코드가 실행됨 C3. 자식 코드 실행 C4. exec()를 통해 디스크에서 명령어에 해당하는 코드를 찾고..

리눅스 커널 강의 1~2강

운영체제 개요 및 정의 스킵 큰 프로그램은 무겁고 다루기 힘드므로 [커널, 쉘, 유틸리티]들로 잘게 나눈다 # 커널 - 항상 메모리에 상주 - 주요 코드는 C로 작성, 나머지는 어셈블리어(하드웨어 의존적, 빠른 속도 덕에) - 3parts [프로세스 관리 / 파일 시스템 / IO시스템] # 유틸리티 - 필요할 때만 메모리에 있다가 다시 사라짐 - 명령 # 쉘 - 커널과 유틸리티의 작업을 관리 - 키보드 입력 관리, 명령 수행 (interpreter) # 파일 - sequence of bytes # Single-user System - Windows - 보안 적음 - 보기좋은 GUI # Multi-user System - Linux - 보안 좋음 # kernel mode - 모든 메모리에 접근이 가능 - ..