HOME > 교육 > 리눅스커널개발과정(과정안내)
리눅스커널개발과정(과정안내)

6 강좌 31 강좌 37 강좌 40 강좌 45 강좌 47 강좌 48 강좌
[과정안내]     (총 53개의 강좌 파일)
강좌 제목 학습목표 및 내용 교재 강좌

[제1강좌]
Introduction to Linux Operating System
1강좌 : Introduction to Linux Operating System
. Course Description
. Outline
. References
. Homework
. History of Unix
. Portability
. Terminology
. Software Concept
. Manual
. man cat
. man bash
. script
. Multi user vs Single user
. User Interface

리눅스 강좌

[제2강좌]
Shell
2강좌 : Shell
. File expansion characters
. Using the shell
. Process Hierachy
. multitasking
. pipe
. meta-characters
. Shell variable
. Aliases
. Revisit
. How an editor is born
. How sh is coded
. Environment variable
. History
. if Statement
. Exit code
. confition Statement
. condition string expression
. for Statement
. And more 
. Script File 
. Start-up files  
	  

리눅스 강좌

[제3강좌]
Introduction to Kernel
3강좌 : Introduction to Kernel
. Kernel, Instruction
. function
. process
. Multi-user System --multiple shells
. Protection
. Main Memory
. Program execution
. OS Kernel

리눅스 강좌

[제4강좌]
Process management
4강좌 : Process management
. Data Structure
. Functions
. Meta-data for Processs : PBC(Process Control Block)
. Observation
. To Create a new child process
. Kernel system calls for process management
. More on exec
. Booting the Kernel
. Process Hierarchy
. 6 run levels
. Thread
. Per Process Data (revisited)
. Back to Process : Process Termination
. exit() system call
. More on swtch()
. Program execution (revisited)
. Round-Robin Scheduling
. Concept of a "Process"
. IPC (Inter Process Communication)
. Pipe Example

리눅스 강좌

[제5강좌]
File System
5강좌 : File System
. Kernel Data Structure for File
. Meta-data for a File
. Contiguous allocation
. open()
. Split Metadata for File
. Sharing Files
. Device switch table
. Kernel tables after open
. Kernel data structure for file
. Kernel Data Structure
. System file table
. Inode table
. In core Inode
. Balanced tree
. Directory file
. Kernel tables before open
. C functions for file
. System call vs Library call
. File vs fd
. Functions for file handling

리눅스 강좌

[제6강좌]
File System in Disk
6강좌 : File System in Disk
. superblock
. Disk Space Management : Free Space
. Free Space Management
. Occupied space
. File System 4 parts (Boot block, Superblock, Inode list, Data block)
. Hardware level Formatting
. Bad block handling
. OS level formatting
. UCB FFS (Fast File System)

리눅스 강좌

[제7강좌]
Loading File Sysem into Memory
7강좌 : Loading File Sysem into Memory
. Buffer
. Buffer Cache
. Delayed Write -- Pros & cons
. Crash
. fsck()
. Design Goal
. Modern systems
. Issues
. Back to buffer cache
. Allocate buffers to whom?
. Remember .. OS Kernel
. Kernel Data Structure
. mouting
. Mount Table Entry
. Relationship between Tables
. Data File System

리눅스 강좌

[제8강좌]
Internet
8강좌 : Internet
. Leased line
. joining the network
. Internet Policy

리눅스 강좌

[제9강좌]
Advanced Functions for File
9강좌 : Advanced Functions for File
. Two methods of accessing files
. Memory Mapped I/O
. readv(), writev()
. Non-blocking I/O
. I/O Subsystem
. File vs I/O
. Size of device driver code
. Caution : terminology
. Terminal I/O
. tty meta-data
. Split tty meta-data
. Accessing termios
. Echoing
. When to wake up program
. raw/canonical modes
. Raw mode
. Canonical mode
. Standard code for tty
. terminfo 

리눅스 강좌

[제10강좌]
Windows
10강좌 : Windows
. Linux Desktop Environments KDE & GNOME
. Multiple Windows
. IPC
. Root Window
. Child Windows
. X-Window Protocol
. GUI involve a log of drawing
. Protocol to minimize network traffic
. X-Window Processes
. 2 kind of processes
. Window Manager a special client process
. Role of Window Manager
. Window Manager
. X-server (Hardware side)
. 2 helping processes
. Window Programming
. Widgets (Internal Window inside child window)
. Window Hierarchy Tree
. Widget classes (Internal windows)
. widget class example
. allowed events on widget classes
. Event-driven programming
. Window Library
. Advanced window programming
. IDE (Intergrated Development Environment)
. Curses Library
. Sample curses functions
. Starting X window
. OO can be ...

리눅스 강좌

[제11강좌]
Developing Software on Linux
11강좌 : Developing Software on Linux
. HW technology
. Separate Compile
. C language revisited
. Reading
. Compiling
. Managing source codes
. Debugging
 . Disk Speed - Exception
 . SW Size
 . 100 programmers, 1 year
 . Compile Time
 . Typical Source Codes
 . Linux kernel Example 
 . To compile correctly
 . Type of operand is not provided?
 . Address of operand not provided?
 . How do we divide source files?
 . You need extern
 . "Define" vs "Declare" 
 . Source file
 . Symbol Table
 . Incomplete binding
 . Linking incomplete part(z)
 . Format of file.o after gcc
 . Three stages
 . You need object module
 . You need #iniclude
 . cpp & substitution
 . C language
 . Java language
 . Program Development

리눅스 강좌

[제12강좌]
Library
12강좌 : Library
. Why we need library
. Symbol table
. Static library
. Convention - Static library
. tar, tar command, tar exercise
. Two Types of Libraries
. Comparision
. Backward Compatibility
. Name of Shared library
. a.out format
. Building Shared Library
. Upgrading Shared library

리눅스 강좌

[제13강좌]
Reading Code in Modular Process
13강좌 : Reading Code in Modular Process
. Modular Programming
. src (include, net, vm, sys...)
. Reading Codes
. Where is getc() function?
. Skip RE if you already know
. Regular Expression : Metacharacters
. grep -- regular expression
. Shell Escape
. To find MAX
. Where is read() function?

리눅스 강좌

[제14강좌]
The AWK Language
14강좌 : The AWK Language
. While reading each line from file Pattern matching, Action
. string examples
. Built-in arithmetic functions
. Range Patterns
. AWK is

리눅스 강좌

[제15강좌]
Ctags Cscope
15강좌 : Ctags Cscope
. src (include, net, vm, sys...)
. Reading Codes... (read.c)
. Looking for identifier
. Where is read() function? index file
. ctags command
. Productivity
. More on Ctags
. Exuberant Ctags
. Linux Cross-Reference (lxr)
. cscope
. using cscope DB
. cscope & unwanted directories
. man find

리눅스 강좌

[제16강좌]
Make
16강좌 : Make
. If I change a source file
. How other files should change
. Optimal compile procedure
. dependency between files
. makefile -- 2 kinds of lines
. automatic generation of makefile
. typical content of makefile
. step taken by make
. Dmmy Trget
. Multiple targets ... 
. Implicit
. Macro
. special dependencies
. directory hierarchy & make
. macro & coding style
. Makefile Macro & Software Quality
. Makefile Macro Conditional Compile

리눅스 강좌

[제17강좌]
Managing Source Files_CVS
17강좌 : Managing Source Files_CVS
. Typical Source Codes
. Everybody makes copy of files
. Many Releases
. Many people, Many Releases
. Number of Files to Manage
. Many people, releases, branches
. Typical System
. Terminoloty
. CVS Command
. CVS Lab Exercise
. creating master source files
. after creating master source
. files created for bookkeeping
. checkout
. Multiple Developers -- Status --
. Manual merge
. add/remove files
. Managing Branches
. Branches
. merge (branch & main tree)
. versions
. CVS command arguments

리눅스 강좌

[제18강좌]
Distributing Open Software RPM Command
18강좌 : Distributing Open Software RPM Command
. Standard format Object Descriptor
. Distribute Open Software?
. Challenges - Open Software Distribution
. Action at target platform...
. Install command
. Definition of "package" (3 type of files)
. Dependency between packages
. sample list of spec files
. content of spec file
. rpm
. rpm DB
. Using rpm command
. All installed packages in the system
. file X is from which packages?
. rpm and capability
. display information of package
. provides what?
. installing package from CD 

리눅스 강좌

[제19강좌]
SW development productivity
19강좌 : SW development productivity
. SW development productivity
. Repeated Primitive Operations
. SW development tools
. IDE (Integrated Development Environment).

리눅스 강좌

[제20강좌]
Shell, Script Revisited (Advanced Shell)
20강좌 : Shell, Script Revisited (Advanced Shell)
. Shell
. Bash Shell features
. Bash Setup Files
. Command Substitution
. Command Group
. How sub-shell is created
. make - revisited
. Built-in Command
. I/O redirection
. Job control
. Conditional command execution
. In sum, sh is ...
. Many different kinds...
. Script & specialty area
. Why Script?

리눅스 강좌

[제21강좌]
셀프복습
자체 복습강의시간입니다.
지금까지 학습하신 강의내용중에 이해되지 않는 강의는 다시 청취하시기 바랍니다.
추후에 셀프복습강의시간에 복습의 의미로 문제를 올려두도록 하겠습니다.

[제22강좌]
Introduction to UNIX Kernel Source Code
22강좌 : Introduction to UNIX Kernel Source Code
. Procedures (Functions)
. Back to C: Complex Declarations
. structure type variables
. Chapter Three
. Pointers
. Back to C: Functions
. Back to C: Operator Precedence. 

리눅스 강좌

[제23강좌]
Mutual Exclusion in UNIX Kernel
23강좌 : Mutual Exclusion in UNIX Kernel
. multi-processor system
. Critical Section : 2 CPU's share a variable
. Interleaved execution
. Mutual Exclusion
. interrupt handler vs kernel
. disable//enable interrupt
. UNIX disk driver
. Race Condition in uni-processor 

리눅스 강좌

[제24강좌]
Process Image
24강좌 : Process Image
. CPU registers
. pdp-11 CPU has 2 SP's
. Why pdp-11 needs MMU (Memory management unit)
. 2 sets of memory mapping registers
. Kernel has PCB for each application
. Kernel's PCB in detail
. Kernel's PCB layout
. scatter ppda in physical address space
. each proc[] points to application's ppda
. 2 sets of {PAR|PDR}
. Kernel's 7th PAR -> active user's ppda
. Process Image
. CPU state 3 types of CPU registers

리눅스 강좌

[제25강좌]
Context Switching in pdp_unix savu() retu()
25강좌 : Context Switching in pdp_unix savu() retu()
. savu()
. retu()
. Context Switching

리눅스 강좌

[제26강좌]
main()
26강좌 : main()
. main() source
. retu(proc[j])
. retu(proc[k])
. ASM : Between kernel & User

리눅스 강좌

[제27강좌]
estabur()
27강좌 : estabur()
. After copying patent's image...
. expand()
. estabur
. sureg
. CPU & Context Switch
. When does process switching occur?

리눅스 강좌

[제28강좌]
trap()
28강좌 : trap()
. Interrupt or Trap(or Exception)
. Assembler  first
. HW interrupt address
. 0511
. Assembler calls kernel C function trap()
. Parameters in stack
. 2673   (dev  sp   … pc  ps)

리눅스 강좌

[제29강좌]
fork()
29강좌 : fork()
. parent invokes fork()
. child starts from swtch/fork
. Overhead of fork()
. How does shell work

리눅스 강좌

[제30강좌]
exec()
30강좌 : exec()
. exec() source code
. Algorithm of exec()
. Passing arguments to child process
. Algorithm of exec()

리눅스 강좌

[제31강좌]
File System
31강좌 : File System
. block device (rk disk)
. source code
. getblk()
. character device

리눅스 강좌

[제32강좌]
pipe file
32강좌 : pipe file
. grep | who
. source code
. IPC

리눅스 강좌

[제33강좌]
Copy Semantics(Adding IO Devices)
33강좌 : Copy Semantics(Adding IO Devices)
. Which I/O devices are in System?
. devswtab[]
. PnP (Plug and Play) : Automatic detection of hardware devices
. Bus & I/O interface
. PnP (Plug & Play)
. Linux Kernel Module

리눅스 강좌

[제34강좌]
Interactive Terminal Device Driver
34강좌 : Interactive Terminal Device Driver
. Data structure for Characters
. Device initiates (top / bottom half)
. source code
. Application Process Initiates
. source code

리눅스 강좌

[제35강좌]
Reading Code
35강좌 : Reading Code
. Source code
. Reading Codes...
. src (include, sys, vm, net...)
. Repeated Primitive Operations 

리눅스 강좌

[제36강좌]
셀프복습
자체 복습강의시간입니다.
지금까지 학습하신 강의내용중에 이해되지 않는 강의는 다시 청취하시기 바랍니다.
추후에 셀프복습강의시간에 복습의 의미로 문제를 올려두도록 하겠습니다.

[제37강좌]
Process (Data Structures)
37강좌 : Process (Data Structures)
. Data Structure change (1) : don't divide PCB for swapping
. Data Structure change (2) : Static -> Dynamic Allocation
. Array -> Liked list
. Data Structure change (3) : Multiple Structs for fork overhead
. Process Creation Overhead
. clone() system call - five flags -
. Linux "thread"
. PCB separates from kernel stack 

리눅스 강좌

[제38강좌]
Process (Functions)
38강좌 : Process (Functions)
. A Process running on 3 CPU's
. Multiprocessor ruuning many Processes
. Get currently executing task
. Process Creation
. clone()
. How child is run first
. Parent's code
. Child Creation in Lion's Code
. Child Creation in Linux
. Why run child first
. PID
. kernel thread (KT)
. Process State
. Process Termination

리눅스 강좌

[제39강좌]
Scheduling
39강좌 : Scheduling
. Priority
. Timeslice
. Ready Queue per each CPU
. Priority Arrays Diagram
. Two Priority Arrays per CPU
. Recalculating timeslice
. Data Structure for Each CPU Scheduling
. Scheduling Algorithm
. Kernel mode task preemption & Critical Section problem
. Mutual Exclusion
. When can you preempt CPU from a task running in kernel mode?
. When does kernel preemption occurs?
. preemption points
. schedule()

리눅스 강좌

[제40강좌]
System Call
40강좌 : System Call
. Invoking a system call
. inside Wrapper Routine
. Compiling
. System Call Handling in Kernel
. Kernel system call function
. System Call Number
. Write a New System Call
. Alternative to New System Call
. System Call Implementation 

리눅스 강좌

[제41강좌]
Interrupt(I)
41강좌 : Interrupt(I)
. CPU & Interrupt
. Interrupt vs Exception
. Many I/O devices - Interrupt Controller
. Interrupt Controller
. PIC (Programmable Interrupt controller)
. Ack
. PIC History (Master/Slave PIC)
. Many IRQ lines per PIC
. Many devices per IRQ line
. Interrupt Handling in Multiprocessor
. Local & multi - APIC
. SMP (Symmetric Multiprocessing)
. IRQ distribution architecture
. IRQ distribution algorithm
. Dynamic IRQ distribution algorithm
. Asymmetric Multiprocessing
. Data Structure for Interrupt Handling
. Information about each IRQ line

리눅스 강좌

[제42강좌]
Interrupt (II) Functions for Interrupt Handling
42강좌 : Interrupt (II) Functions for Interrupt Handling
. functions for interrupt
. do_RIQ()
. source code
. Three cases
. Case (1)
. Case (2)
. Case (3)
. State of IRQ.

리눅스 강좌

[제43강좌]
Interrupt(III) Race Condition
43강좌 : Interrupt(III) Race Condition
. Race Condition
. do-IRQ() - critical section
. ISR is not a critical section
. source code
. When & who calls do_softirq()?
. Urgent/non-urgent work in TCP/IP
. Which part is done in which module TCP/IP
. Top half & Bottom half (TCP/IP example) 

리눅스 강좌

[제44강좌]
Bottom Halves
44강좌 : Bottom Halves
. Why Bottom Halves?
. Top half & Bottom half
. 3 Ways to Register Bottom Half Handlers
. Softirq
. Defining Softirq
. In Linux, only first few entries are used
. do_softirq()
. Invoking do_softirq()
. Concurrent Execution of Softirq
. Mutual Exclusion in Softirq Execution
. Tasklet
. Softirq vs Tasklet
. Data Structure for Tasklet
. Activating the Tasklet
. Work Queue
. Which bottom half should I use?
. Comparison 3 Bottom Half Handlers 

리눅스 강좌

[제45강좌]
Kernel Synchronization
45강좌 : Kernel Synchronization
. How CPU performs X++
. Three Cases of Race
. (Case A) 2 CPU's sharing a variable
. SMP sharing variable
. (Case B) kernel base code vs interrupt handler
. (Case C) Process context Switch during System Call Execution
. Linux functions for Preventing Race
. Automic functions
. Lock
. Lock - serveral issues
. 2 kinds of lock
. Spin Lock
. Semaphores
. Which method to use : Spin vs Semaphore
. Where -- race conditions
. Advanced Issues
. Reader/Writer Spin Lock
. Seq Locks
. Comparison
. BKL : The Big Kernel Lock
. Completion Variables
. Barriers
. Timers and Time Management
. Terminology
. Hardware Clocks and Timers
. Timer Interrupt Handler
. The Time of Day
. Timers
. Delaying Execution
. Other Ways to Delay Execution

리눅스 강좌

[제46강좌]
Timers and Time Management
46강좌 : Timers and Time Management
. Timers and Time management
. Terminology
. Hardware Clocks and Timers
. Timer Interrupt Handler

리눅스 강좌

[제47강좌]
Memory Management
47강좌 : Memory Management
. Background
. Smarter Space Management
. Heap Storage
. Heap - Variable size allocation
. malloc / free example
. Heap Storage
. External Fragmentation
. Compaction
. Performance Enhancement of Heap storage
. Smarter Space Management
. inode object, inode cache
. emptypartial / full slab free inode list
. Terminology
. Slab layer -- how it works 

리눅스 강좌

[제48강좌]
Virtual File System_VFS
48강좌 : Virtual File System_VFS
. Many Different Implementation
. VFS Layer
. open files & mounted file systems
. Per Process Data Structures
. Linux VFS Standard Objects
. Superblock Object
. File Object
. Operations on File Object
. Inode Object
. Operations on Inode Object
. Dentry Object
. Where should we place dentry?
. Back to File object
. Dentry Object
. Operations on Dentry Object
. dentry cache lookup
. Dentry State
. Reading Linux Code
. What is in f_op?
. Superblock
. When you load (mount) superblock from disk
. Inode object
. who initializes Superblock?
. code reading & binding is dynamic

리눅스 강좌

[제49강좌]
Page Cache
49강좌 : Page Cache
. Terminology
. Buffer and Page
. Page Cache
. Objects that use pages
. Alternatively...
. address_space struct
. This page is being used for what?
. data structures for file
. read() system call
. struct page
. Page Cache
. Buffer, You still need it for metadata
. storing buffers in a page
. buffer lists
. Linux buffer cache
. bread() for metadata read
. History

리눅스 강좌

[제50강좌]
Block IO Layer
50강좌 : Block IO Layer
. Vectored I/O
. Reminder -- Lion's code
. readi()
. rkstrategy()
. Lion's code buffer_header
. Problems with Lion's code Buffer Head
. The bio structure
. Individual I/O Request
. Request Queue per Device
. I/O Scheduler
. 2 types of device

리눅스 강좌

[제51강좌]
Process Address Space
51강좌 : Process Address Space
. Example of Address Mapping
. Memory Descriptor
. Reaching Memory Areas
. VMA (Memory Area)
. Other Fields
. Kernel thread - Memory Descriptor
. Paging
. Address Space & Page Table Size
. Address Space per Process
. Paging in Linux
. Page Mapping Table
. Functions for Process Address Space
. Allocating Memory Descriptor
. Destroying Memory Descriptor
. Manipulating Memory Areas 

리눅스 강좌

[제52강좌]
Swapping & Flushing
52강좌 : Swapping & Flushing
. When pages are updated
. Page Frame Reclamation
. Writing out Dirty Pages
. pdflush Daemon
. Swapping out Anonymous Pages
. Linux swapping
. Swap Area in Disk
. Swapping Subsystem
. Swap in - Race Problem
. Swap out - Race Problem
. Linux Solution - Swap Cache
. Page Fault 

리눅스 강좌
top버튼