+ 한국항공대학교 최차봉 교수님의 임베디드 SW 과목 내용을 정리한 글입니다.
Linux Torvals가 minix를 통해 80386 PC를 위한 커널로 처음 개발했다.
대표적인 리눅스 배포판 (Kernel, Shell, Free SW Packages)
- Debian(1993), Fedora(2003), CentOS(2004), Ubuntu(2004)
Linux의 구조
Hardware - Hardware Interface - Kernal Space - System Call Interface - User Space
Hardware Interface
- Hardware 장치와 소프트웨어 간 상호작용을 가능하게하는 연결점 역할 (USB, HDMI 등)
Kernel Space
- OS(운영체제): Process Manager, Memory Manager, File System Manager, Device Manager, Net Manager..
System Call Interface
- OS의 여러 시스템에서 제공하는 함수들을 사용할 수 있도록 하는 역할
User Space
- Application, Shell (사용자로 하여금 OS를 사용할 수 있게 해주는 역할: Command Interpreter)
Linux Directory(= 폴더) 구조 (트리 구조)
- bin: 기본적인 명령 파일들을 저장한 디렉토리
- opt: 추가 패키지가 설치되는 디렉토리
- boot: 부팅에 필요한 정보를 가진 파일들을 저장한 디렉토리
- root: 시스템 관리자인 root 계정의 홈 디렉토리
- dev: 장치 파일들이 저장된 디렉토리
- sbin: 부팅에 필요한 시스템을 운영, 관리를 위한 명령 파일들을 저장한 디렉토리
- etc: 리눅스 설정을 위한 각종 파일들이 저장된 디렉토리
- srv: FTP나 Web 등 시스템 서비스의 데이터가 저장된 디렉토리
- home: 사용자 홈 디렉토리
- tmp: 시스템 사용 중 발생한 임시 데이터가 저장된 디렉토리
- lib: 라이브러리가 저장된 디렉토리
- usr: 기본 실행 파일, 라이브러리 파일, 헤더 파일 등이 저장된 디렉토리
- media: CD-ROM이나 USB 같은 외부 장치가 연결된 디렉토리
- var: 시스템 운영 중에 발생한 데이터와 로그가 저장된 디렉토리
- mnt: 파일 시스템을 임시로 연결(마운팅)하는 디렉토리 (mnt 디렉토리 하위에 저장)
- proc: 프로세스 정보 등 커널 관련 정보를 저장한 디렉토리 (CPU도 파일처럼 표현)
- sys: 리눅스 커널 관련 정보를 저장한 디렉토리
- run: 실행 중인 서비스와 관련된 파일들이 저장된 디렉토리
Kernel과 Shell
Kernel
HW와 Application 간 상호작용을 돕는 핵심이다.
커널 버전 확인: uname -r
Shell
Unix 계열 시스템의 대화형 Interface이다. (일종의 인터프리터, 스크립트 언어)
사용자가 입력한 명령을 받아 해석하고, 커널에 전달하여 결과를 반환한다.
대표적인 Shell의 종류
- sh: Unix의 최초 Shell. Steve Bourne이 개발했다.
- bash(Bourne-Again Shell): 가장 많이 사용되는 Shell이다. (Linux에서 사용)
- 그 외: csh(C Shell), ksh(Korn Shell), tcsh, zsh, fish 등
사용 중인 Shell 버전 확인: echo $SHELL
- echo: 화면에 보여줘, $: 변수의 내용을
사용 가능한 Shell 확인: cat /etc/shells (bash 외 다른 Shell들을 확인할 수 있다.)
프로세스 (Process)
Program vs Process vs Processor
1. Program: 코딩한 결과가 Disk안에 저장된 정보. (실행을 위에서는 Memory로 Load시켜야 한다.)
2. Process: Memory에서 실행 중인 코드. (실행 중인 프로그램의 상태)
3. Processor(CPU): Process가 실행 중인 장소.
Foreground Process
키보드와 디스플레이(화면)를 사용하여 실행되고 있는 프로세스
- 명령 실행 후 종료될 때까지 다른 작업을 할 수 없다. (Multi Tasking 불가능)
- ctrl + c: 종료 (종료되지 않는 경우는 kill 명령어를 활용)
- ctrl + z: 일시 중단 후 Background로 전환
예) sleep 1000 (1000초 동안 정지. Foreground에서 실행하기 때문에 기다려야 한다.)
Background Process
사용자와 대화 없이 실행되는 프로세스
- 명령 실행 중 다른 작업을 할 수 없다. (Multi Tasking 가능)
- 명령 뒤에 '&'을 입력하면 Background로 실행된다.
sleep 1000 & (1000초 동안 정지. Background에서 실행하기 때문에 기다리지 않아도 된다.)
- Terminal이 종료되면 Background Process도 종료된다.
=> 종료되지 않게 하는 명령어: nohup sleep 1000 &
=> Background에서 실해되는 Process를 강제 종료하는 명령어: kill %[작업(job)번호]
+ job 번호, PID 두 가지로 종료가 가능하다.
Job(작업): 현재 터미널(Shell)에서 실행 중인 프로그램
jobs -l: job의 번호를 확인하는 명령어 (-l은 long으로 자세히 봐야 job번호가 보인다.)
ps -e: PID(Process ID)를 확인하는 명령어 (현재 실행 중인 프로세스 모두 확인)
Package Manager
리눅스의 주요 모듈 설치를 돕는 시스템
- Package 간의 의존성을 확인하여 자동으로 설치한다. (인터넷 필요)
종류
- yum: RedHat 계열 (CentOS)
- apt: Debian 계열 (Ubuntu)
명령어
- apt -h: 사용법을 출력 (-h는 일반적으로 help, 사용법을 알려준다.)
- apt list [패키지명]: 설치할 수 있는 패키지의 버전 출력
- apt install [패키지명]: 패키지 설치
- apt search [패키지명]: 패키지 검색
- apt update: 설치된 패키지 업데이트
- apt update [패키지명]: 패키지 업데이트
- apt upgrade: 설치된 패키지 업그레이드
- apt remove [패키지명]: 패키지 삭제
'Computer Science > Embedded Software' 카테고리의 다른 글
[Embedded Software] Embedded System 개발 (example) (1) | 2023.09.19 |
---|---|
[Embedded Software] Shell Script 실습 (0) | 2023.09.15 |
[Embedded Software] Shell Script (0) | 2023.09.13 |
[Embedded Software] Linux Commands 실습 (3) | 2023.09.08 |
[Embedded Software] Linux Basic Commands (0) | 2023.09.06 |