Jay's Cookbook
Menu
  • Tags
  • Categories
  • Projects
Computer Science
OS
Network
Data Structure
Algorithm
Language
Code Architecture
Python
Javascript
Typescript
Java
Backend
Backend Theory
TypeORM
Node.js
NestJS
FastAPI
Frontend
HTML/CSS
React
Next.js
Data Engineering
DE Theory
MySQL
MongoDB
Elastic
Redis
Kafka
Spark
Airflow
AI
Basic
Pytorch
NLP
Computer Vision
Data Analytics
Statistics
Pandas
Matplotlib
DevOps
Git
Docker
Kubernetes
AWS
[Linux]: 리눅스 커널
CS
OS

[Linux]: 리눅스 커널

Jay Kim
Jay Kim 02 Mar 2024
[OS]: 프로세스 [Linux]: 리눅스 쉘 필수 명령어

Table of Contents

  • 리눅스
    • 3개의 주요 리눅스 계열
  • 리눅스 커널
    • 리눅스 커널 구조
    • 리눅스 커널의 핵심 역할
      • 하드웨어 관리 및 추상화
      • 프로세스와 스레드 관리
      • 메모리 관리
      • I/O 관리
  • 리눅스 쉘
  • 기본 쉘 명령어

리눅스

  • 대표적인 컴퓨터 운영체제 중 하나이다
  • 1969년, AT&T의 벨 연구소에서 처음으로 유닉스(Unix)라는 운영체제를 개발했으나 이는 상업적 목적으로 사용되면서 사용이 제한되었다
  • 1983년, 리처드 스톨먼에 의해 시작된 GNU 프로젝트에서 소스코드의 자유로운 사용과 수정이 가능한 오픈 소스 형태의 운영체제를 개발하게 되었다
  • 1990년대 초, 운영 체제에 필요한 프로그램들 다수(예: 라이브러리, 컴파일러, 문서 편집기, 유닉스 셸, 윈도 시스템)가 완성되었으나 운영체제의 핵심이 되는 커널(kernel) 개발에 난항을 겪었다
  • 1991년, 헬싱키 대학교 재학생이었던 리누스 토르발스는 자신이 사용하던 운영체제 미닉스의 라이선스 문제에 실망하고 직접 커널을 개발했다
  • 이 후 스톨먼이 만들고 있던 운영체제와 토르발스의 커널이 만나 지금의 리눅스(Linux) 운영체제가 탄생하게 되었다
  • 현재는 개인용 컴퓨터를 넘어 서버용 컴퓨터, 스마트폰, 임베디드 시스템 등 다양한 장치의 시스템 소프트웨어로 사용되고 있다
  • 전 세계적으로 약 300여 가지의 리눅스 배포판이 존재한다

3개의 주요 리눅스 계열

  • Debian
    • Debian, Ubuntu, Mint Linux
    • 오픈 소스, 안정성에 초점
  • Red Hat/Fedora
    • Fedora, Red Hat, CentOS, Amazon Linux
    • 엔터프라이즈 서버 환경을 타겟
  • openSUSE
    • openSUSE, SUSE LInux Enterprise Server
    • 오픈소스, 안정성에 초점
  • 공통점
    • GNU 소프트웨어
    • 리눅스 커널
  • 차이점
    • 패키지 매니저(apt, yum, rpm, ..)
    • 기본 파일 시스템

리눅스 커널

  • 커널은 컴퓨터 운영 체제의 핵심이 되는 컴퓨터 프로그램이다
  • 운영 체제의 다른 부분, 응용 프로그램에 필요한 여러 가지 서비스를 제공한다
  • (open, read, write, close, wait, fork, exec 등)
  • 응용 프로그램이 하드웨어에 직접 접근하도록 허용하는 것은 위험하기 때문에 커널이 중간에서 그 역할을 담당한다

리눅스 커널 구조

  • 모노리틱 커널
    • 장점: 구현이 간단하다. 성능이 좋다(커널 문맥에서 많은 부분이 처리되어 시스템 자원을 효율적으로 사용)
    • 단점: 커널 코드에 오류가 생기면 시스템 전체에 영향을 끼친다

리눅스 커널의 핵심 역할

  • 하드웨어 관리 및 추상화
  • 프로세스와 스레드 관리
  • 메모리 관리
  • I/O 관리

하드웨어 관리 및 추상화

  • 서버 관리자 입장에서는 응용 프로그램이 서버의 하드웨어에 직접 접근하지 못하기 때문에 하드웨어 관리에 대한 부담이 없음
  • 사용자 프로그램은 데이터가 디스크의 어느 위치에 있는지 몰라도 됨. 어떤 디바이스(HDD, SSD, USB 등)를 사용하는지 걱정하지 않아도 됨

프로세스와 스레드 관리

  • 프로세스(또는 스레드)에 CPU 사용 시간을 적절히 할당해 줌으로써 멀티 태스킹을 가능하게 함

메모리 관리

  • 개별 프로세스에 가상의 연속된 메모리 공간을 제공
  • 물리 메모리보다 더 큰 크기의 프로그램을 실행 가능하도록 해줌

I/O 관리

  • 모든 것은 파일(파일 디스크립터)이다
  • VFS -> 하부 시스템 구성에 상관없이 파일 입출력 제어 가능

리눅스 쉘

  • 사용자 또는 응용프로그램이 커널의 기능을 안전하고 쉽게 이용할 수 있도록 도와주는 인터페이스를 말한다
  • (DB의 데이터에 접근하는 SQL문을 사용자가 직접 써서 DB의 데이터에 접근하지는 않는다)
  • (사용자는 보통 API의 서버가 제공하는 엔드포인트로만 DB의 데이터에 접근한다)
  • (이 때 API 서버의 엔드포인트가 쉘, SQL문이 커널, DB가 하드웨어라고 생각하면 된다)
  • 대표적인 쉘로는 bash와 zsh이 있다
  • 사용자 -> 터미널 프로그램 -> 쉘 -> 리눅스 커널 -> 하드웨어

기본 쉘 명령어

ls
cd
cd - : 이 전에 있었던 위치로 이동
man
pwd

cat: 파일 내용 읽기
head
tail
more
less

# 컨트롤 f 기능 리눅스에서 쓰는 방법
페이지 안에 들어가서(vim, more, less 같은걸로) / 누르고 검색하고 싶은 단어 입력하고 엔터치면 해당 단어있는 부분 하이라이트 된다
그 상태에서 계속 / 누르면 해당 단어 있는 곳으로 이동함
# 따옴표는 필수는 아니지만 띄어쓰기 있으면 필수로 써야함
grep '<찾고 싶은 문자열>' <파일명>
ls -al | grep '<찾고 싶은 문자열>'
find . "*.conf"

# find 라고만 치면 현재 위치 하위의 모든 파일명 출력한다 -> 이렇게 파이프와 grep 쓰는게 좀 더 편할 수 있다
find | grep conf

root 유저는 파일에 설정된 권한 같은 걸 모두 무시
[OS]: 프로세스 [Linux]: 리눅스 쉘 필수 명령어

You may also like

See all OS
10 Apr 2024 [Linux]: 리눅스 쉘 스크립트
CS
OS

[Linux]: 리눅스 쉘 스크립트

18 Mar 2024 [Linux]: 커맨드라인 툴(3) 시스템 정보
CS
OS

[Linux]: 커맨드라인 툴(3) 시스템 정보

18 Mar 2024 [Linux]: 커맨드라인 툴(2) 검색
CS
OS

[Linux]: 커맨드라인 툴(2) 검색

Jay Kim

Jay Kim

Web development, data engineering for human for the Earth. I share posts, free resources and inspiration.

Rest
Lifestyle
Hobby
Hobby
Hobby
Hobby
2025 © Jay's Cookbook. Crafted & Designed by Artem Sheludko.