Tips/LINUX2009. 9. 18. 18:23
아래의 글은 O'Reilly Linux DevCenter의 글을 참고해서 요약 정리한 것입니다
리눅스 맨페이지를 보려면 man sem_overview 하십시오

  • System V semaphores' API
    • semget(), semctl(), semop()
  • POSIX semaphores' API
    • sem_init(), sem_wait(), sem_post(), sem_destroy()
  • System V 세마포어와 POSIX 세마포어의 차이점

    •    System V Semaphores
       POSIX Semaphores
       API's semget(), semctl(), semop() sem_init(), sem_wait(), sem_post(), sem_destroy() ...

       세마포어 카운터

      자유로움  1단위로 증감
       세마포어 권한
      가능
       불가
       원자적 초기화 및 생성

      아니오

       예

       API의 직관성
       떨어짐  우수함
       세마포어들 간의 관계

      배열 관계

       각각의 개체
       여러 프로세스 간 유효한 세마포어
       가능

       불가(Unnamed semaphores)

       성능

       상대적으로 떨어짐 상대적으로 더 우수
           

  • 세마포어와 뮤텍스의 차이점
    • 세마포어는 뮤텍스로 쓸 수 있지만, 뮤텍스는 세마포어의 역할을 할 수 없다. 즉 바이너리 세마포어는 뮤텍스와 같이 동작한다.
    • 세마포어는 소유자가 없고, 뮤텍스는 소유자가 있다.
    • 뮤텍스는 한 프로세스 내부에서 쓰레드 간에 리소스를 동시에 접근할 수 없게하기 위해 사용하고, 기본적으로 세마포어는 공유된 자원을 정해진 수 만큼만 사용하도록 제한하기 위해 사용한다.
    • 세마포어는 파일 형태로 구현되며, 명시적으로 종료하지 않는 한 시스템 전체에 영향을 미치게 할 수 있다(다른 프로세스 사이에서도). 반대로 뮤텍스는 한 프로세스 안에서만 유효하며 프로세스가 종료되면 사라진다.
    • 뮤텍스가 세마포어 보다 가벼우며 사용하는 문법도 더 간단하다.
  • 세마포어의 기본 알고리즘
    • Wait (Lcok)동작: 얻으려고 하는 세마포어의 카운트가 0보다 작거나 같으면 무한 대기하고 있다가, 0보다 커지면 카운트를 -1한다.
    • Signal (Unlock)동작: 세마포어 카운트를 1 증가시킨다.


Posted by young.h.rhie
Tips/LINUX2009. 8. 12. 10:55
함수로 만들려고 하다가 KLDP에 질문해서 답을 얻었다.
다음에도 사용할 수 있도록 참고하기 위해 남겨둔다.

## VERSION 1.0
function show_env_var
{
    tmp="$"$1
    eval "printenv=$tmp"
    echo $1=$printenv
}

##VERSION 2.0
## 1.0에서는 $1가 비어있거나 엉뚱한 값이 들어갈 때 제대로 처리하지 못한다
function show_env_var
{
    [ -n "$1" ] && echo $1=${!1}
}

테스트하기
$show_env_var BASH
BASH=/bin/bash



Posted by young.h.rhie
Tips/LINUX2009. 8. 6. 16:47
  • GNU C Libary http://www.gnu.org/software/libc/ http://sourceware.org/glibc/
    • 임베디드 시스템용으로는 크기가 커서 부담스럽다
  • uClibc http://www.uclibc.org/
    • 많이 사용되고 있다
  • Newlib http://sourceware.org/newlib/
  • Diet Libc http://www.fefe.de/dietlibc/
  • Klibc ftp://ftp.kernel.org/pub/linux/libs/klibc/

Posted by young.h.rhie
Tips/LINUX2009. 8. 6. 09:44
t 옵션은 리스트를 보는 것이다. 그래서 x 대신에 t를 쓰면 리스트를 볼 수 있다.

$ tar tvzf foo.tar.gz
$ tar tvjf bar.tar.bz2
Posted by young.h.rhie
Tips/LINUX2009. 8. 3. 16:32

JFFS(Journaling Flash File System) vs. YAFFS(Yet Another Flash File System)

  • 플래시 메모리
    • 1984년 도시바에서 최초로 발명하였다
    • EEPROM과의 차이점: 여러 구역으로 구성된 블록 내에서 지우기/쓰기할 수 있다
    • EEPROM보다 싸다
    • DRAM과는 달리 비휘발성이나 DRAM보다는 느리다
    • 하드디스크와 비교하면 지우기 횟수가 하드디스크에 비해 훨씬 적다
    • 블록단위로 읽고 쓸 수 있지만 지울 때는 블록단위로 지워야하며, 지우기 이전에는 쓸 수 없다

  • 플래시 유형
    • NOR : 읽기 속도 빠름. 한번에 바이트 하나를 다루도록 프로그램. 삭제 가능 횟수는 약 10만회
    • NAND: 빠른 쓰기/삭제, 큰 용량. 다중바이트 버스트(보통 512바이트)의 방식으로 프로그램. 삭제 가능횟수는 약 100만회
  • Flash용 Filesystem
    • JFFS
      • 로그 기반의 파일 시스템
      • NOR/NAND 지원
    • YAFFS
      • 이런저런 설명을 여기에....
    • 읽기전용 압축 파일 시스템
      • CRAMFS(Compressed ROM file system)
      • SquashFS

(작업중...)
Posted by young.h.rhie
Tips/LINUX2009. 7. 31. 21:28

-H : 찾는 패턴이 들어 있는 해당 파일의 이름을 출력한다.
-n : 찾는 패턴이 들어 있는 파일의 행 번호를 출력한다
-i : 대소문자를 무시한다

Posted by young.h.rhie
Tips/LINUX2009. 2. 22. 21:40
자주 잊어버려 적어둔다

$ tar cvzf foo.tar.gz foo --exclude bar --exclude bar2

$tar cvzf foo.tar.gz --exclude=.svn foo
Posted by young.h.rhie
Tips/LINUX2009. 2. 17. 20:12
자주 잊어버려 기록해둔다.

1. 기본형
find ./ -name "*.tmp"

2. 디렉토리 명으로 찾기
find ./ -name "var" -type d

3. 특정 크기 이상
find ./ -size +300k

4. 수정한 날짜
find ./ -mtime +20

5. 찾아서 지우기
find ./ -name "*.tmp" -exec rm -rf {} \;

6. 특정 퍼미션
find ./ -perm 644
Posted by young.h.rhie
Tips/LINUX2008. 11. 7. 13:38
시작 및 정지
# service iptables stop|start|restart|status

상황보기
# iptables -L

설정 파일 : /etc/sysconfig/iptables

# 외부 네트워크에서 들어오는 Subversion 접속 시도 차단
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 3690 -j ACCEPT -s aaa.bbb.ccc.ddd/ee

aaa.bbb.ccc.ddd/ee 부분이 허용할 네트워크 주소임
Posted by young.h.rhie
Tips/LINUX2008. 11. 6. 20:43
export PS1='[\u@\h \w]\n\$ '

나오는 모양
[foo@bar /usr/bin]
$
Posted by young.h.rhie