search results for 'linux'

  1. 2007/05/28 Asynchronous I/O or Non Blocking I/O
  2. 2007/04/18 Ubuntu 7.04 Feisty Fawn
  3. 2006/12/14 linux 2.6.x porting #2
  4. 2006/12/14 linux 2.6.x porting
  5. 2006/11/02 Linux 2.6.18 (2)

위키에서 둘이 같은 말이라는데 음... 그랬나? ㅋ
지금부터 주절대는 말은 내 개인적인 생각임, 근데 아마 맞을것임 아님 말고 ㅋ

두개가 개념상으로 약간은 틀린거 같은데 거의 같으니 머 쩝
암튼 이건 process가 I/O 때문에 cpu를 idle 상태로 장시간 두는 것을 방지하기 위한 것임

먼저 Non Blocking부터 얘기해보자..
소켓 프로그래밍을 하다 보면 이런 경우를 자주 봤을것이다
recv()에서 죙일 블록 되거나
accept()에서 죙일 블록되거나 이런거 말이당 ㅋ
이게 쉽게 말하면 Blocking I/O란 말씀!!!

이거 socket file을 open할 때 기냥 open system call을 써서 그런다
default가 Blocking Mode로 들어간다
이렇게 하면 process block으로 인해 망합니다 ㅋㅋ
이걸 방지 하기 위해 socket file을 open할때 잘 하믄 된다 ㅡㅡ;
어떻게? file control system call을 쓰자
prototype
- int fcntl(int fd, int cmd, int arg);

ex) fcntl(fd, F_GETFL, flag | O_NONBLOCK);
참고 하시라

이렇게 하면 어떻게 되느냐? 성공하면 물론 성공값을 return하고
실패하면 왜 실패 했는지 그 정보를 전달해 준다, 보통 -1을 반환 하지만
process block에 의한 error인지 아니면 다른 이유에 의한 error인지
구분 할 수 있어야 한다. 아마 errno.h에 명시가 되어 있을듯?

이번엔 Asynchronous를 얘기해 보자
비동기 입출력이라고도 한다. 한글로 얘기하니까 약간 어색하다 ㅋㅋ
어색해야 정상이라고 생각하는게 좋다 ㅋㅋ 영어가 폼난다 -_-;
역시 예는 socket이다 크허허허
Non blocking의 경우는 안되면 실패 했다가 성공 할때까지 한다(독한넘 ;;;)
이놈도 마찬가지지만 성공하면 event가 signal을 날린다
 - Linux의 경우임, SIGIO와 SIGUSR을 같이 쓰기도 한다고 함
sigaction으로 설정해 놓고 역시 fcntl을 통해 Non blocking옵션과
asynchronous 옵션을 설정해 주면된다
ex) fcntl(fd, F_SETFL, O_NONBLOCK | FASYNC);

이 외에도 방법론이 몇개 되는 듯 하다
- Polling : 이건 Non Blocking인듯?
- Selcet(poll) loop : 이건 그닥 유용하지 않은 듯 하다 ㅋㅋ 그러니 패스 -_-;
- Signal(interrupt) : 요게 Asynchronous인듯?
그 외 Callback Function, LWP(Light Weight Process = Thread), Completion Queue, Event Flag가 있다. 근데 대충 보니 그닥 안땡기니 설명은 패스!!! 크허허 -_-;



모야 제대로 알고 가자고 해놓고선 ㅡㅡ;
인생이 다 그런거다 ~_~;

===================================================================================

TAG I/O, linux
19일 ubuntu 7.04 버전이 출시 된다는 군영 ㅋ
워~ 6.10 낸지가 언제라고 벌써 7.x대를 ~_~
이번엔 리눅스 디버깅 툴을 포함한다는군요
MS에서는 윈도우에서 프로그램에서 삑싸리 나면 MS로 보고 하냐 마냐 하는 귀찮은 창으로
이미 지원하고 있지요 ㅋ (물론 안나오게 꺼놓지만 -_-;)



우분투를 만드는 캐노니컬의 갑부 CEO Mark Shuttleworth는 이런류의 말도 했다는 군요
- 자기는 우분투를 비영리적인 목적으로 운영할 수 있다. 나는 돈 쓸곳이 필요하다 -_-;(나에게 다오 ;;;)

자세한 기사는?  ZDNet Korea에 있데요... 링크는 귀찮음 -_-?

===================================================================================

add issue

device driver -> block device -> loopback device -> initrd

file system -> NFS uncheck

그외 불필요한거 삭제 ->MTD, 기타 등등
그래야 zImage 용량이 줄어든다 크허허허허허허허

===================================================================================

linux kernel porting sequence

- modify machine code
$(kerneldir)/arch/arm/boot/compressed/head-xscale.S 수정

mainstone을 기준으로 변경한다 -> mainstone은 100번이 넘기 때문에 mov로 안되고 ldr로 해야 한다

- Makefile 수정
ARCH := arm
CROSS_COMPILE := arm-linux-

- $(kdir)/include/asm/arch-pxa/debug-macro.S
orr   \rx, \rx, 0x00100000 -> 0x00700000     @ FFUART-> STUART

-$(kdir)/include/asm-arm/arch-pxa/uncompressed.h
#define   FFUART -> STUART

-$(kdir)/arch/arm/kernel/setup.c
#define MEM_SIZE (16*1024*1024) -> (128*1024*1024)

- $(kdir)/arch/arm/mach-pxa/mainstone.c
memory mapping 수정
io_desc memory map을 참조하여 수정

- kernel configuration
boot command
="root=/dev/ram0 initrd=0xa0400000,5M ramdisk=12288 console=ttyS2,115200 mem=128M rw"

- make mainstone_defconfig
이후 불필요한 device driver 삭제 -> kernel zImage 용량을 줄이기 위해

- file system
ext2 file system
ext2 file system extend

이정도만 고치면 될듯 ㅡㅡㅋ

===================================================================================

Linux 2.6.18

ThinK/SomethinG 2006/11/02 15:26

음... 이번 embedded app software에서 linux 2.6.x kernel을 완전 분석(?) 하라는군요 ㅋ

그래서 찾아 봤더니 현재 2.6.18까지 나왔더군요 ㅋ

전에 했던게 2.6.16까지 건드려봤던거 같은데 ㅎㅎㅎㅎ

새롭게 다운받아 갖고 놀아봐야 겠네용 냐하

우선 linux를 살려야 한다는 ;;;;;

===================================================================================