Programming Linux 2.6 정리 원문: http://www.linux-mag.com/2004-06/compile_01.html
2.6커널에 대한 내용임 관심없는 몇몇 부분은 빠뜨렸음
AIO(Asynchronous I/O) libaio, liaio-devel
io_setup() : 컨텍스트 생성
io_submit() :IO - 컨텍스트간 연결
io_getevents() : 컨텍스트에서 발생된 작업의 상태,결과를 불러옴 io_cancel() : 컨텍스트에서 발생된 작업의 상태,결과를 불러옴을 취소
io_destroy() : 컨텍스트 파괴
Synchronous Directory 지정한 디렉토리내에서 변경된 것은 디스크에 바로 반영되도록 함.
lsattr /some/directory -> 디렉토리가 동기화설정되어 있는가 파악 chattr +S /some/directory -> 디렉토리를 동기화 설정
Access Control List fine-grained 제어 제공. user,group,other에 대해 접근권한을 제어하는 기존 UNIX의 권한제어와 달리, 임의의 사용자에 대한 접근권한을 제어할 수 있다.
setfacl m u:kang:rw,u:nobody:r index.html -> index.html파일에 대해 kang은 쓰기/읽기 가능, nobody는 읽기만 가능
Extended Attributes 파일이 가진 기본 속성외에, 추가적으로 자신이 정의한 속성을 지정할 수 있다.
setfattr n pub_date v "June 2004" article.txt -> article.txt파일에 pub_date속성값으로 June 2004를 지정
[C API] #include <sys/types.h> #include <attr/xattr.h> const char* attrName = "pub_date" ; const char* attrValue = "June 2004" ; const char* file = "article.txt" ; enum { NO_FLAGS = 0 } ; ... setxattr( file, attrName, attrValue, strlen( attrValue ), NO_FLAGS );
epoll() 솔라리스의 /dev/poll을 흉내낸 리눅스의 polling system
epoll_create() : fd생성
epoll_ctl() : watch list에 fd추가
epoll_wait() : fd에 대한 이벤트 체크
close() : fd close
oprofile : http://oprofile.sf.net 성능에 대한 튜닝시 프로파일링을 이용하여 측정하는데, 이제 커널자체에서 프로파일링을 제공. 기존 GNU의 gprof의 경우, 프로파일링을 활성화하여 재컴파일이 필요했으나, 이젠 그럴 필요 없다. 제대로 될라나?..
opcontrol opreport opgprof : gprof이 인식하는 포맷으로 변환
스레드 스레드와 관련된 커널의 변화 1. 커널 자체는 preemptive(선점형)이다. 2. 1:1 모델에 기반: 커널스레드는 각 사용자스레드에게 가용함(available) 3. NPTL(Native Posix Thread Library)지원: 시그널 핸들링이 향상 이전 바이너리로 인해 NPTL의 비활성화가 필요할땐, 환경변수 LD_KERNEL_ASSUME에 이전 커널 버전을 지정 (2.4.1 OR 2.2.5)
seqlocks 빈번한 호출영역에 있는 변수(비포인터 변수)에 대한 공유접근 배제
#include <linux/seqlock.h>
seqlock_t lock; seqlock_init( &lock ); int counter = 0; ... write_seqlock( &lock ); ++counter; write_sequnlock( &lock );
futex(fast user-space mutex) 경합을 해결하기 위해 커널공간의 동기화 설비. 기존 semaphore, mutex도 내장하고 있음
core 파일 재명명
sysctl w kernel.core_pattern = "core.%h%p%u"
%h : hostname %p : PID %u : user
/proc, /sys
/sys : 머신의 H/W 트리 표현 ex) sda의 online여부 파악: /sys/block/sda/device/online을 read /proc : 실행중인 프로세스들과 커널 상태에 대한 정보 보유 새로 추가된 엔트리 : /proc/pid/status, /proc/pid/stat 포맷변경된 파일 : /proc/meminfo
각 디렉토리를 사용하는 대표적인 패키지 /proc -> procps /sys -> kobject
Loadable 모듈 확장자 변경됨: .o -> .ko MODULE_LICENSE 매크로, EXPORT_SYMBOL_GPL() : 현모듈의 exported symbol에 대한 타 GPL모듈들의 접근을 제한 | This article comes from dbakorea.pe.kr (Leave this line as is)
|