본문 바로가기
반응형

Linux BSP47

[Linux] fork()와 exec()를 이용한 프로세스 생성 과정 ubuntu@ubuntu8:~/pi_bsp/kernel$ gcc fork.c -o fork *fork system call return 값을 통해 어떤 프로세스인지 확인이 가능함 -1: 에러 / 0: 자식 프로세스 / 다른 값 : 부모 프로세스 *fork()와 exec()를 사용한 프로세스 생성 부모 프로세스가 종료될 때 자식프로세스가 종료되지 않는 걸 좀비 프로세스라고 하는데, 이를 방지하기 위해 아래 단계를 따르는게 좋음. 1.현재 프로세스에서 fork() 호출 2.자식 프로세스가 fork()로 부터 0 값이 반환 되면 exec()를 호출하여 새로운 프로그램으로 바꾼다. 3.부모 프로세스는 wait()를 호출하여 자식 프로세스의 종료를 기다리고, 자식 프로세스가 종료 되었다는 정보를 받으면 프로세스 .. 2024. 2. 19.
[Linux File System] Linux Root File System * Root File system은 부팅시 fstab파일을 실행하고 파일의 코드가 동작하면서 root file system을 mount합니다. pi@pi08:/etc $ vi fstab ubuntu@ubuntu8:~/pi_bsp/rootfs$ wget https://downloads.raspberrypi.org/NOOBS_latest ubuntu@ubuntu8:~/pi_bsp/rootfs$ unzip -d noobs NOOBS_latest ubuntu08@ubuntu08-VirtualBox:~/pi_bsp/rootfs$ du -h -d 1 noobs/ 1.3M noobs/overlays 48K noobs/defaults 2.8G noobs/os 2.8G noobs/ ubuntu@ubuntu8:~/pi_b.. 2024. 2. 19.
[Linux File System] Yocto Project Linux에서 부팅되고, 로그인되고, 다양한 데몬 구동, 배쉬 할당 등을 위해 반드시 필요한 파일들을 Root File System이라고 함. 폴더 만드는 건 생략. rootfs와 그 하위에 yocto 디렉터리 생성 필요한 패키지 다운로드 ubuntu@ubuntu8:~/pi_bsp/rootfs/yocto$ $ sudo apt update//필수 패키지 설치 $ sudo apt-get install gawk wget git diffstat unzip texinfo gcc-multilib build-essential chrpath socat libsdl1.2-dev xterm python zstd liblz4-tool Git 코드 다운로드 poky (ubuntu 20.04 버전에 맞는게 Release 4.0.. 2024. 2. 19.
[Linux] Foreground, Background 개념 명령어로 이해하기 firefox를 쳐서 대기중인건 foreground 프로세스인거임. bash라는 프로세스가 fork를 통해서 firefox라는 자식프로세스를 만들고 실행되는거임. 고로 firefox의 부모 프로세스는 배쉬쉘임. firefox가 종료될 때까지 배쉬쉘은 아무 동작도 안함. 명령어를 쳐도 버퍼에 저장되어 있다가 firefox가 종료된 후에야 버퍼의 명령어를 실행하는거임. 이렇게 fg로 실행하면 자꾸 막혀있으니까, bg 개념이 나온거 ubuntu@ubuntu8:~$ firefox & 백그라운드로 실행했기 때문에 여러 명령어를 칠 수 있음. ubuntu@ubuntu8:~$ jobs 만약 실수로 fg로 돌린걸 bg로 돌리고 싶다? ctrl+z를 눌러서 프로세스 중지 top 명령어를 쳐서 확인해보면 stop된게 확인.. 2024. 2. 16.
[Linux] Linux 압축 관련 명령어 정리 리눅스 압축 명령어 정리입니다. 얼마나 큰 폴더인지 보고싶을 때 사용하는 명령어는 ubuntu@ubuntu8:~/pi_bsp/kernel$ du 너무 많이 나오기 때문에 몇 라인이 나온건지 확인해보니 5136..ㄷㄷ ubuntu@ubuntu8:~/pi_bsp/kernel$ du | wc -l 5136 ubuntu@ubuntu8:~/pi_bsp/kernel$ du -h GB단위 옵션 ubuntu@ubuntu8:~/pi_bsp/kernel$ du -h -d 1 1.7G ./linux 1.7G . 파일이 몇개인지 알고 싶을때는(파일에는 디렉터리도 포함임..!) ubuntu@ubuntu8:~/pi_bsp/kernel$ find | wc -l 84603 파일이 많으니까 파일을 압축해보자 ubuntu@ubuntu8.. 2024. 2. 15.
[RaspberryPi Kernel] Ubuntu 환경에서 커널 부팅 이미지 바꿔버리기~ 저는 모니터로 7인치 LCD를 쓰고 있으니 800x480보다 큰 사이즈의 이미지를 준비해주겠습니다. 각자 큰 사이즈의 이미지를 준비하십쇼 어차피 나중에 gimp라고 하는 이미지 편집기로 편집할거니까 상관 읍어요~ samba로 넣어주든 우분투에서 넣든 다 괜춘~ 결론적으로 우분투에 이미지가 준비되어 있으면 됨. samba로 들어간 이미지 파일을 ~pi_bsp/kernel/로 copy해주시고 sudo apt install gimp 안되면 sudo snap install gimp gimp gimp 열고나서 이미지 드래그해서 넣어주고 열고 회전하고 크기 조절해주면 됨. LCD에 이미지의 LOW_LEVEL 데이터 값을 줘서 이미지를 출력하는거임. 세로 이미지 이신분들은 이미지 좌클릭 -> 이미지 image -> .. 2024. 2. 15.
[Linux] Kernel, Process, Memory..? 우수한 CPU에서 하나의 프로세스만 쓰기엔 자원이 남는다. 그래서 멀티 프로세싱을 하기 위해서 시간을 분할해서 여러 프로세스를 빠른 속도로 나눠서 처리해줌. 스케쥴러(Scheduler) 한 순간에 오직 하나의 프로세스 만이 CPU를 점유 가능 -> 스케쥴러는 여러 프로세스가 CPU를 공유하여 사용 가능하도록 해준다. 선점형(preemptive)과 비선점형(nonpreemptive) 1. 비선점형 -> 프로세스가 자발 적으로 CPU 사용권 반납했을 때만 스케쥴링 2. 선점형(RTOS) -> 프로세스 별 사용 시간을 지켜보면서 정기적으로 스케쥴링 *문맥 교환(Context Switch) CPU의 사용권을 다른 프로세스에게 양도 -> 현재의 Context 정보를 저장하고 새 프로세스의 Context 정보를 적.. 2024. 2. 15.
[Linux BSP] U-Boot 초기화 과정 Arm920 processor에서 돌아갈 때 기준으로 U-Boot의 초기화 과정을 살펴보겠음. 1. arch/arm/lib/vectors.S _start 2. 리셋 핸들러로 분기arch/arm/cpu/armv7/start.S reset SRAM에서 메모리로 다 복제가 되었다면, Program Count를 변경하고 아랫 단계 수행 2024. 2. 13.
반응형