[Linux] Linux 개론

2024. 11. 28. 23:11·System

2024.07.05

 

linux란

컴퓨터 운영 체제 (OS) 중 하나로, 전 세계적으로 널리 사용되고 있다.


오픈 소스

오픈 소스 소프트웨어 (OSS) : 소스 코드를 누구나 열람, 수정 배포할 수 있는 소프트웨어
공개적으로 접근 가능하며, 사용자들이 자유롭게 수정하고 개선할 수 있다.

 

오픈 소스의 중요성

 

투명성

소스코드 공개로 소프트웨어의 동작 방식을 투명하게 확인 가능하다.


협업과 혁신

전 세계의 개발자들이 협업하여 빠르게 소프트웨어를 개선한다.


비용 절감

상용 소프트웨어에 비해 라이센스 비용이 아예 없거나 저렴하다.

 

자유와 통제

사용자가 소프트웨어를 자유롭게 수정하고 커스터마이징할 수 있는 권한을 가진다.


GPL License

GNU General Public License : 자유 소프트웨어 재단에서 만든 라이선스
소프트웨어를 자유롭게 사용할 수 있고, 소스 코드를 수정 및 배포할 수 있는 권리를 보장한다.
수정 및 배포시에도 동일한 GPL 라이선스를 유지해야 한다.


Linux 구조


1. 어플리케이션 (Application)

일반적으로 사용하는 바이너리, 명령어, 빌드된 파이들을 통틀어서 어플리케리션이라고 칭한다.
사용자가 직접 상호작용하는 단계이고 다양한 프로그램 언어로 빌드된 앱들을 포함한다. <br/>


주요 기능

- 사용자 인터페이스 제공 : 사용자가 쉽게 상호작용할 수 있는 인터페이스를 제공한다.
- 시스템 리소스 사용 : 어플리케이션은 커널을 통해 시스템 리소스 (CPU, Memory, I/O장치 등)를 사용한다.

 


2. 쉘 (Shell)

어플리케이션이 커널에서 사용하는 명령어 등을 가려주고 쉘 자체를 사용해 스크립트를 만들 수도 있다.


주요 기능

- 명령어 해석 : 사용자가 입력한 명령어를 해석하고 실행하기 위해 시스템 콜을 사용한다.
- 스크립트 실행 : 쉘 스크립트를 통해 여러 명령이 조합이나 여러 라인의 명령어를 일괄 실행할 수 있다.
- 환경 관리 : 쉘 내에서 환경 변수를 설정하고 관리할 수 있다.

 


3. 커널 (Kernel)

운영체제 (OS)의 핵심 부분으로 하드웨어와 직접 상호작용하는 단계이다.
시스템 자원 (CPU, Memory 등)을 관리하고 어플리케이션/쉘 ↔ 하드웨어 간의 통신을 중재한다. <br/>


주요 기능

- 프로세스 관리 : 프로세스 생성, 스케줄링, 종료 등
- 메모리 관리
    - 가상 메모리 : 보조 기억 장치를 이용해 실제 사용 가능한 메모리보다 더 많은 메모리를 사용가능하게 하는 기법이다.
    - 페이징 : 메모리를 좀 더 효율적으로 사용하기 위해 고안된 기법으로 메모리를 일정 크기만큼 잘라서 사용하는 기법이다.
    - 스왑 메모리 : 실제로 사용하지 않는 나머지 부분(페이지)을 보조 기억 장치의 특정 영역(스왑 영역)으로 옮겨서 공간을 확보하는 기법이다.
- 파일 시스템 관리 : 파일 저장, 접근, 조작
- 장치 관리 : HW 장치와의 상호작용 관리, 장치 드라이버를 통해 이를 추상화한다.
- 보안 및 접근 제어 : 사용자와 시스템 자원 간의 보안 정책을 관리하고 적용한다.

 


4. 하드웨어 (Hardware)

물리적인 컴퓨터 구성요소로 CPU, Memory, SSD, HDD, Network Interface 등을 포함한다.
HW는 직접 통제하지 않고 커널의 추상화를 통해 HW를 관리할 수 있도록 간접적으로 접근하게 된다. <br/>


주요 기능

- CPU : 명령어를 처리하고 프로그램을 실행한다.
- Memory : 현재 실행 중인 프로그램과 데이터를 저장한다.
- 저장 장치 : HDD, SDD와 같은 장치가 있으며, 데이터를 (반)영구적으로 저장한다.

 


Linux의 배포판

반응형

'System' 카테고리의 다른 글

[Linux] Linux 심화  (1) 2024.11.29
[Linux] Linux 명령어  (0) 2024.11.28
Git Commit Convention  (1) 2024.11.28
[Network] TCP/UDP 패킷 확인하기  (0) 2024.11.28
[Network] 네트워크 개론  (1) 2024.11.28
'System' 카테고리의 다른 글
  • [Linux] Linux 명령어
  • Git Commit Convention
  • [Network] TCP/UDP 패킷 확인하기
  • [Network] 네트워크 개론
ssu_dev
ssu_dev
  • ssu_dev
    ssu
    ssu_dev
  • 전체
    오늘
    어제
    • 분류 전체보기 (98)
      • Cloud (10)
      • HCI (2)
      • Algorithm (54)
      • Programming (13)
      • Computer Science (5)
      • System (6)
      • Trouble Shooting (6)
      • Work (1)
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 인기 글

  • 태그

    Deque
    dfs
    Java
    투포인터
    bfs
    BOJ
    docker
    Pod Scheduling
    EKS
    자료구조
    K8s
    Karpenter
    플로이드 워셜
    Stack
    구현
    sort
    node scaling
    priorityqueue
    OS
    cs
  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
ssu_dev
[Linux] Linux 개론
상단으로

티스토리툴바