본문 바로가기

Linux

(9)
[펌] 리눅스에서의 세마포어(2) 제공 : 한빛 네트워크 저자 : Vikram Shukla 역자 : 주재경 원문 : Semaphores in Linux [이전 기사 보기] 리눅스에서의 세마포어(1) POSIX 세마포어 System V 세마포어에 대한 잠재적인 학습곡선이 POSIX 세마포어에 비해 훨씬 높다. 당신이 이 부분을 본 후 이전 장에서 당신이 배운 것과 비교해 보면 더욱 쉽게 이해 될 것이다. POSIX는 세마포어에 대한 동작, 생성, 초기화에 대한 사용법이 간단하다. 프로세스간 통신을 제어하는 훨씬 효과적인 방법을 제공한다. POSIX는 2가지 종류 named 세마포어와 unnamed 세마포어를 가지고 있다. Named ..
[펌] 리눅스에서의 세마포어(1) 제공 : 한빛 네트워크 저자 : Vikram Shukla 역자 : 주재경 원문 : Semaphores in Linux 멀티쓰레드로 된 응용프로그램이 나날이 상용 프로그램의 한 부분을 이루고 있다. 멀티쓰레드를 사용하지 않은 상용 프로그램이 사용된다는 것은 상상도 할 수 없다. 응용프로그램은 시스템이나 프로그램의 성능향상 측면에서 멀티쓰레드를 반드시 사용해야 한다. 그러나 인생에서 가장 아름다운 것은 그만한 대가 없이는 얻을 수 없는 법이다. 응용프로그램에 멀티쓰레드 기능을 사용하고자 한다면 여기에는 deadlock, 경쟁조건(race condition), 쓰레드의 비정상 동작 등 몇 가지 이슈 사항..
Hard Link와 Symbolic Link의 차이점 편 역: 안창선(csan@coresw.co.kr, http://genesis.yonsei.ac.kr/~kabin) 원출처: O'REILLY UNIX POWERTOOLS 1998 1. Hard Link 하드 링크는 두개의 파일 이름이 하나의 inode와 같은 데이터 블럭을 가르킨다. 모든 유닉스 버전은 하드 링크를 제공한다. 두가지의 한계가 있다. 첫째, 파일시스템간의 하드링크는 불가능 하다. 둘째, 디렉토리에 대한 하드링크는 불가능 하다. 또한 두가지의 잇점이 있다. 첫째는 그 링크와 실제 파일은 완전히 같고, 나머지 하나의 링크는 파일 시스템 공간을 전혀 차지 하지 않는다라는 것이다. 2. Symbolic Link( Or Soft Link) 심볼릭 링크에서 두 링크는 전혀 별개의 파일이다. 하나는 실제..
linux 관련 정보 명령어 > /proc/asound 이 디렉토리는 시스템내에 설치되어진 사운드카드에 대한 정보를 볼수 있습니다. /proc/cpuinfo 프로세서의 정보가 들어있습니다. cpu의 타입, 모델, 제조회사, 성능 등에 관한 정보를 알려줍니다. /proc/devices 현재 커널에 설정되어 있는 장치의 목록을 볼 수 있습니다. /proc/dma 현재 어느 DMA 채널이 사용 중인지를 알려줍니다. /proc/filesystems 어떤 파일시스템이 커널에 설정되어 있는지를 알 수 있습니다. /proc/ide 이 디렉토리는 IDE-인테페이스와 이것과 연결된 IDE-device들에 대한 정보를 표시합니다. /proc/interrupts 현재 어느 인터럽트가 사용 중인지, 그리고 얼마나 많이 사용되었는지를 알 수 있습니다. /..
Linux VFS(Virtual File System Switch) 해부 Linux VFS(Virtual File System Switch) 해부 추상화 및 상위 레벨 개념 M. Tim Jones, Independent Author, Emulex Corp. 원문 게재일 : 2009 년 8 월 31 일 번역 게재일 : 2009 년 10 월 20 일 Linux®는 유연성과 확장성 그 자체라고 할 수 있습니다. VFS(Virtual File System Switch)를 사용해 보십시오. 기존 디스크와 USB 플래시 드라이브, 메모리, 기타 스토리지 장치와 같은 다양한 장치에서 파일 시스템을 작성할 수 있습니다. 다른 파일 시스템의 컨텍스트 내에 파일 시스템을 삽입할 수도 있습니다. VFS의 강력한 기능을 확인하고 주요 인터페이스와 프로세스를 학습합니다. developerWorks에..
Double Linked-list (이중 연결 리스트) * 이중 연결 리스트 • list_head라는 자료 구조를 이용하여 구현 • list_head는 전체 자료 구조가 아닌 list_head 필드의 주소를 저장 • LIST_HEAD(list_name) : 리스트를 새로 만듬 • list_add(n,p) : p가 가리키는 요소 다음에 n을 가리키는 요소 삽입 • list_add_tail(n,h) : 첫번째 요소의 주소인 h로 지정한 리스트의 맨 끝에 n이 가리키는 요소 삽입 • list_del(p) : p가 가리키는 요소 삭제 • list_empty(p) : 첫번째 요소의 주소로 지정한 리스트가 비어 있는지 검사 • list_entry(p, t, f) : 이름이 f고 주소가 p인 list_head 필드를 포함한 t타입 자료 구조의 주소 반환 • list_fo..
list_head를 사용하는 이유 리눅스 커널 Q&A 게시판 펌 (http://linux.flyduck.com/cgi-bin/webboard/wwwboard.cgi?db=lkqna&mode=read&num=1587&page=9&ftype=6&fval=&backdepth=1) >옛날 커널에서는 prev , next를 사용했었는데 >요즘에는 list_head 를 사용하는것같습니다. >list_head를 사용하는 이유는 무엇인지 궁금합니다. >prev,next를 쓰는것이 더 직관적이지 않을까요? 2.4 커널에서부터 linked list 구현이 아주 일반화되어서 쉽게 linked list를 만들 수 있는데, list_head는 이 linked list head를 정의하는 자료구조라고 이해하면 될 것 같습니다. list_head만 있으면 link..
Linux linked list 리눅스 커널에서 쓰는 linked list 의 해더 파일이다. 범용으로 쓰기위해 양방향 연결리스트로 선언했고. 더미로 연리스리스트 head 를 선언하였다. 연결리스트 add 를 하다보면 header와 함께 환영 양방향 연결리스트로 구성이되고 prev , next 로 접근함에 따라 stack 방식/ que 방식의 메모리 접근가능. for루프로 한쪽방향으로 계속 따라 들어가서 접근방식. malloc으로 메모리 할당은 안했으므로.. 단순 stack 메모리에 잡힐수도, malloc으로 사용자 메모리에 쓸수도 있는것이다.? del 로 링크리스트 끊는 역할만 하므로 메모리는 약간의 낭비가 있을듯하다.? list_entry 역할.. list 연결리스트의 주소만 갖고 해당 스트럭쳐의 주소를 반환받을수있다. (어느 형태..