본문 바로가기
IT 정보기술, 전자, 통신/TIP과 TECH

리눅스 개념 및 주요내용 정리 -180711

by 팁텍북 2018. 7. 11.

리눅스 개념 및 주요내용 정리 -180711(VM, Linux)

리눅스 180711


1.리눅스 설명

리눅스 작동설명과 커맨드라인에 대한 설명.

커널에 대한 책을 보면 리눅스에 대해 자세히 알 수 있음.

2.코드짜고 실행

3.메이크라는 매크로를 써서 파일생성

Virture

오픈소스

아두이노, 라즈베리파이, 라떼 판다


아래는 라즈베리 사이트이다.

https://www.raspberrypi.org/

유닉스

AT&T


리눅스 창시자의 최초 뉴스그룹 소개내용.

(출처:comp.os.minix)


I'm doing a (free) operating system (just a hobby, won't be big and professional like gnu) for 386(486) AT clones. This has been brewing since April, and is starting to get ready. I'd like any feedback on things people like/dislike in minix, as my OS resembles it somewhat (same physical layout of the file-system (due to practical reasons) among other things).

I've currently ported bash(1.08) and gcc(1.40), and things seem to work. This implies that I'll get something practical within a few months [...] Yes - it's free of any minix code, and it has a multi-threaded fs. It is NOT portable (uses 386 task switching etc), and it probably never will support anything other than AT-harddisks, as that's all I have :-(.

[...] It's mostly in C, but most people wouldn't call what I write C. It uses every conceivable feature of the 386 I could find, as it was also a project to teach me about the 386. As already mentioned, it uses a MMU, for both paging (not to disk yet) and segmentation. It's the segmentation that makes it REALLY 386 dependent (every task has a 64Mb segment for code & data - max 64 tasks in 4Gb. Anybody who needs more than 64Mb/task - tough cookies). [...] Some of my "C"-files (specifically mm.c) are almost as much assembler as C. [...] Unlike minix, I also happen to LIKE interrupts, so interrupts are handled without trying to hide the reason behind them.

(출처:https://en.wikipedia.org/wiki/Linux_kernel)

Kernel

OS의 중요한 부분

자원관리

Kernel의 관리자(5)


1.태스크 관리자

2.메모리관리자

3.파일 시스템

4.네트워크 관리자

5.디바이스 드라이버


Task os가 제어하는 프로그램의 기본 단위

Pid Process ID

Kernel이 할당해준다. 매번 달라진다.


Fork함수

루트에서.

쓰레드 Thread

프로세스와는 다름. 가상메모리 구현x


Thread vs Process정리

Multi Thread 프로그램의 단점

https://www.joinc.co.kr/w/Site/system_programing/Book_LSP/ch07_Thread


Linux task context: 태스크 실행 시 관련 정보를 관리해야함. 모든 정보를 문맥이라고 한다.

(시스템, 메모리, 하드웨어 문맥)


  • 실시간 테스크 스케쥴링

(FIFO, SJF, RR, Deadline) 알고리즘들. 우선순위가 같을 때 어떻게 할 것인가에 대해 고민함.

FIFO (first in first out)

Round Robin(RR) Time slice, 시분할 처리

Earliest deadline first(EDF) 가장 급한 것을 끌어다가 처리 (priority = deadline)

이런게 있다정도로 이해.

일반 태스크 스케쥴링


CFS(Completely Fair Scheduler)

우선순위x


스케쥴링의 종류들

(참고: https://wkdtjsgur100.github.io/scheduling-1/)


스케줄링 - FIFO, SJF 개념

(참고: https://wkdtjsgur100.github.io/scheduling-2/)


가상 메모리의 관리


리눅스 파일 시스템


ext2-ext3-ext4

갈수록 상위버전임.

  • 저널링

:주 파일 시스템에 변경사항을 반영(commit)하기 전에, 저널(주로 파일 시스템의 지정된 영역 안의 원형 로그)안에 생성되는 변경사항을 추적하는 파일 시스템이다. 시스템 충돌이나 전원 문제가 발생하면, 이러한 파일 시스템은 더 빠르게 online 상태로 돌아오며 손상될 가능성이 낮다.


참고: 저널링 파일 시스템 (출처: https://ko.wikipedia.org/wiki/%EC%A0%80%EB%84%90%EB%A7%81_%ED%8C%8C%EC%9D%BC_%EC%8B%9C%EC%8A%A4%ED%85%9C)


체크섬

:확인. 제대로 되었는지.


가상 파일 시스템(Virtual File System)

실제 파일 시스템 위의 추상 계층이다. VFS의 목적은 클라이언트 응용 프로그램이 여러 파일 시스템에 같은 방법으로 접근할 수 있게 하는 것이다.


공통 함수 이용하여 시스템에 접근.

open(), read(), write()


참고: 가상 파일 시스템 (출처:

https://ko.wikipedia.org/wiki/%EA%B0%80%EC%83%81_%ED%8C%8C%EC%9D%BC_%EC%8B%9C%EC%8A%A4%ED%85%9C


Ardunio 이탈리아어, 최고의 친구

POSIX는 IEEE가 제정한 Unix의 애플리케이션 프로그래밍 인터페이스(API) 규격

IEEE [I triple E]

Bootlin에서 공개된 커널을 살펴볼 수 있다.

http://elixir.bootlin.com/linux/v2.6.11-tree/source

/arch/arm/mach-s3c24xx 경로의 예이다. 삼성의 arm기반 칩 아키텍트에 대한 내용이다.


Makefile을 살펴보자.


Arm칩에 따라 커널이 다른데 살펴보는데에 사용하면 유용하다.

살펴보고자 하는 해당함수를 찾으려면 open하고 함수의 원형을 찾으면 된다.


아래는 Oracle VM virtualBox의 사용과정이다.



댓글