리눅스 스터디 - 1

2018. 1. 8. 23:36

스터디를 진행하기로 하였습니다. 저는 교육과정에서 배운 리눅스를 가르쳐주고(겸사겸사 복습할겸) 친구는 ucos2를 가르쳐주기로하였죠.

 

스터디 공부의 기본골자는
1. 무엇을 교육할지 리스트 정리
2. 관련 ppt, 코딩자료, 교육내용준비하기
3. 교육전 한번 읽어보며 준비하기
4. 교육 후(혹은 교육받은 후) 블로그에 백업하며 복습하기
로 진행하려고 합니다.(안 올라오면 원래 스터디하는 날이 아니거나 개인적 사정으로 못올리는 것입니다.)

 

 

오늘 진행 분 정리하였습니다.

 

0장.

커널의 정의

 - 프로세스 관리와 메모리 관리, 입출력관리, 파일시스템 관리 등과 같이 운영체제가 수행하는 핵심적인 기능을 수행

 

커널의 구성요소

 

 

 - Trap= sys call(SWI)

 

파일시스템

 - 파일을 저장하기 위한 공간을 할당하고, 파일에 대한 접근을 제어하는 등 파일을 관리하는 시스템

 - 파일이나 디렉토리에 대한 정보는 inode에 있다. 파일 소유자, 수정날짜, 크기 등등이 들어있다.

 

프로세스 관리

 - 커널은 여러 프로세스를 스케줄링하여 프로세스들이 동시에 수행되는 것처럼 나타남

 - 프로세스간 통신은 시스템콜(SWI)로만 가능하다

 - 프로세스의 상태

     new: fork() 함수로 프로세스 생성

     ready: 생성후 대기상태

     running: 현재 cpu에서 프로세스 동작중인 상태

     waiting: 인터럽트(I/O)완료나 signal을 기다리는 상태

     terminated: 종료

- 재진입 프로그램 (Reentrant)

     동일한 프로그램을 다른 프로세스로서 동시수행 하는 것을 의미

     text영역은 동일하게 참조하나, data와 stack영역은 다르다

 

프로세스구조

 - text, rodata, rwdata, bss, heap, stack로 나뉨(임베디드 정리 참조)

 

가상메모리

 - 시스템 동작중에 기존 메모리의 용량이 부족하여 하드디스크의 일부 공간을 메모리처럼 사용하는 것

 - 하드디스크는 메모리보다 속도가 느리기 때문에 가상메모리를 쓰면 속도가 느려지는 단점이 있다.

     - 이를 해결하기위해 수면상태이거나, 대기상태인 프로세스들은 하드디스크에 저장하고,

     - 실행해야하는 프로세스는 메모리로 읽어들이는 방식으로 해결한다

 

스와핑

 - 스왑장치: 가상메모리로 사용되는 하드디스크

 - 스와핑: 프로세스를 스왑장치로 기록하고 다시 읽어오는 동작을 의미

     - 스왑 아웃(swap out): 프로세스가 메모리에서 스왑장치로 이동하는것

     - 스왑 인(swap in): 프로세스를 메모리로 다시 읽어들이는 것

        

 

특수파일

 - 장치를 추상화하여 파일로 취급하는데(sw적으로 제어할 수 있도록) 이를 특수 파일이라고 한다.

 - 장치에는 블록장치(디스크, LCD와 같이 블록단위로 전송하는 장치)와 문자장치(uart, 키보드와 같이 문자단위로 전송하는 장치)가 있다.

 

※ 임베디드 시스템에 따른 차이

펌웨어: 프로그램

리눅스: 프로세스

RTOS: Task

 

=> RTOS에서 동작하는 Task와 리눅스같은 gpos에서 동작하는 프로세스는 동작하는 기능이 서로 비슷하지만, RTOS의 Task는 크기가 너무 작아(빠른 응답성을 유지하기 위해서) 프로세스라 부르지 않고 Task라고 말한다.

 => 리눅스에서의 Task는 kernel에서 관리하기위해 프로세스의 관한 정보를 담아 둔것을 의미한다.(즉 RTOS의 Task와 리눅스의 Task는 서로 다르다)

=> 공부 이후로 개념정리를 다시하였다. ucos2 스터디 - 2(http://lagifun-inforecord.tistory.com/14?category=726947)참조한다.

 

1장.

유닉스 역사  - 생략

 

유닉스 발전과정 - 생략

 

유닉스 종류

 - 슬랙웨어(Suse, Vector Linux 등)

     소프트웨어 대부분을 소스 컴파일로 설치 : 초보자에게 난해

 - 데비안(Ubuntu, Linux Mint 등)

     데비안 프로젝트에 의해서 발전 : 다양한 개발자들이 참여(=패키지에 문제점이 발견되면 몇일 후에 바로 수정 패키지가 만들어져
보급)

 - 레드햇(Cent OS, Fedora, Oracle Linux, Mandrake 등)

     쉬운 인스톨러 (RPM: redhat package manager)와 관리 툴제공

 

유닉스 특징 - 생략

 

GUI와 CLI

 - GUI: 버튼, 메뉴, 아이콘 등을 포인터 디바이스로 제어해서 컴퓨터를 다루는 유저 인터페이스

 - CLI: 문자 기반 시스템인 프롬프트를 사용하여 명령어나 데이터를 입력하는 인터페이스

=> CLI는 복잡한 명령어를 외워야 하지만 익숙해지면 GUI에 비해서 실행이 빠르다

 

리눅스 장점 - 생략(공개, 무료이다 이것말고 뭐가 더 중요한가?)

 

유닉스 구조

 

 

 

 

 

 

 

 

 

 

 - 커널(Kernel)

     컴퓨터의 모든 자원을 관리하는 핵심 프로그램

     장치(device), 파일 시스템, 프로세스, 메모리, 네트워크를 관리한다.

 - 쉘(Shell)

     사용자와 커널 사이의 중간자 역할 담당(사용자가 입력한 명령을 해석하여 커널에 넘겨준다)

     리눅스에는 본쉘(Bourne Shell, sh), C쉘(C Shell, csh), 콘쉘(Korn Shell, ksh), 배시쉘(Bash Shell, bash)이 있다.

 - 파일 시스템

     시스템 파일, 사용자 파일, 디렉토리를 관리하는 프로그램

 - 유틸리티

    파일 편집기, 개발도구, 네트워크 관련 도구등 부가적으로 제공되는 서비스(프로그램)

 

리눅스 명령행 입력도중 편집하는 방법

 - 문자 지우기: 백스페이스, delete키

 - 단어 지우기: 컨+w

 - 문장 지우기: 컨+u

 

명령어의 구조

 - 구조: 명령 [옵션] [인자]

 - 옵션: 명령의 세부기능을 선택하는 옵션이다. -로 시작하고 숫자, 대문자, 소문자로 구성되어 있다.

 - 인자: 명령으로 전달되는 값을 의미한다. 보통 파일명이나 디렉토리명이 들어간다(아닌건 거의 없는 것 같은데..)

 

명령어의 종류

※ 필자는 지금까지 자주 사용해왔던 명령어들만 정리하였다.(기껏해야 6개월정도..) 모르는 명령어나 특정기능을 수행하는 명령어를 알고 싶으면 구글이나 리눅스 명령어 사전을 구입해 찾아보자.

 

date

 - 날짜와 시간을 출력

 

clear

 - 화면을 깨끗이 지움

 

man

 - 명령어에 대한 설명서(manual)을 출력한다

 - ex: man clear => clear에 대한 설명을 프롬프트 화면에 출력

 

sudo와 su

 - su: 로그인 계정 전환

 - sudo command: 현재계정을 유지한 채로 관리자의 권한만 일시적으로 부여

=> su root는 root관리자 계정으로 전환+root관리자의 환경설정 사용, sudo는 root관리자 권한 일시 부여+현재계정 환경설정사용

※ 참조: http://plaboratory.org/archives/4398

     su -c 'command' == sudo command

     sudo –i == su root

passwd

 - 현재 로그인한 사용자의 비밀번호를 변경한다

 

접속종료

 - 로그인 계정 접속 종료(logout)와 현재 사용중인 쉘을 종료시키는 명령(exit, 혹은 컨+d), 프로세스 강제종료(컨+c, 자세한건 kill명령어에서 알아보자)등 이 있다.

 

2장.

리눅스 시스템에서의 파일의 종류

 - 일반파일, 디렉토리 파일, 심볼릭 링크 파일, 장치 파일

 - 일반파일: 데이터의 저장을 목적으로 하는 파일, 텍스트파일과 바이너리파일로 나뉜다.

 - 디렉토리 파일: 일반파일과는 다르게 자신의 밑에 하위 파일을 가질 수 있는 특수파일(디렉토리나 다른 파일들을 하위에 둘 수 있다.)

 - 심볼릭 링크 파일: 원본 파일을 가리키는 특수 파일(일종의 바로가기로 생각하면 된다)

     =>3장에 나오는 복사(cp)와 링크(ln)의 차이/하드링크 (ln)와 심볼릭 링크(ln –s)를 꼭 참조한다.

 - 장치 파일: 장치를 관리하기 위한 특수 파일

 

절대경로와 상대경로

 - 절대경로: 루트 디렉토리(최상위 디렉토리)를 기준으로 하는 특정 파일의 위치

 - 상대경로: 현재 위치를 기준으로 하는 특정파일의 위치

 - 보통 절대경로는 /부터 시작하며, 상대경로의 홈 디렉토리는 ~, 현재 디렉토리는 ., 상위디렉토리는 .., 하위디렉토리는 이름으로 나타낸다.

 - ex:

  

     위에서 현재 위치가 work에 있을 때

        현재 경로를 나타내는 절대경로는 /work 이고, 상대경로는 ./혹은 work이다.

         test의 경로를 나타내는 절대경로는 /work/test 이고, 상대경로는 ./test 혹은 work/test이다.

 

파일과 디렉토리 명명시 유의사항

 - 사용가능: 알파벳(대소문자 구분), 숫자, 하이픈(-), 밑줄(_), 점(.)

 - 사용자제: 공백, *, &, |, “, ‘, `, ~, #, $, (, ), |, ;, <, >(쓰는 경우 이름을 따옴표로 감싸거나 모든 특수문자 앞에
\를 추가해야 한다)

 - 사용불가: /

 

명령어의 종류 2

pwd

 - 현재디렉토리의 절대 경로 출력

 

cd [경로]

 - 원하는 디렉토리로 이동

 

ls [옵션] [파일 또는 디렉토리명]

 - 옵션: a(all, 시스템에 숨겨진파일도 보여줌), l(long, 파일과 디렉에 대한 상세정보 출력)

 - ex: ls -l 디렉토리 =>해당 디렉토리에 존재하는 폴더들에 대한 상세정보를 출력한다.

 

mkdir [옵션] 디렉토리명

 - -p : 디렉토리 생성에 필요한 하위 디렉토리도 함께 생성

 

rmdir [옵션] 디렉토리명

 - -p : 지정한 디렉토리 삭제 후 부모 디렉토리가 비어있으면 삭제

 

3장.

명령어의 종류 3

cat 파일명/디렉토리명

 - 간단한 파일 보기 명령으로 짧은 파일에 적합

more 파일명/디렉토리명

 - 파일의 내용을 한 화면씩 출력

 - 이전 페이지: b, 다음 페이지: space, 종료: q

 

cp [옵션] 원본파일명 복사파일명

 - 특정 파일이나 디렉토리를 다른 이름으로 복사

 - 옵션: -i(파일을 덮어쓸 때 경고 메시지 출력), -r(디렉토리 복사)

 - ex:

 

 

rm [옵션] 파일명/디렉토리명

 - 지정한 파일이나 디렉토리를 삭제

 - 옵션: -i(확인 후 삭제), -f(무조건 삭제), -r(디렉토리 삭제)

 

mv [옵션] 원래이름 새이름

 - 파일 이름을 바꾸거나 이동

 - 옵션: -i(확인 후 이동), -b(이동할 때 같은 이름의 파일이 있으면 그 파일을 백업 해놓는다)

 - ex:

  

 

ln [옵션] 원래이름 새이름

 - -s옵션이 있으면 심볼릭 링크, 옵션이 없으면 하드링크 파일을 생성한다.

 - 복사(cp)와 링크(ln)의 차이

   

 

 - 하드링크 (ln)와 심볼릭 링크(ln –s)

   

 

※ 파일 생성하기

 - vi 파일명(거의 vi 파일명 이나 vim 파일명만 사용한다)

 - touch 파일명

 - cat > 파일명

 

touch [옵션] 파일

 - 지정한 파일이 존재하지 않으면 생성, 존재하면 현재 시간 또는 지정한 시간으로 수정시간 변경

 - 옵션

-a : 접근 시간만 변경
-c : 지정한 파일이 없는 경우 새로 생성하지 않음
-m ; 수정 시간만 변경
-r ref_file : 시간을 파일에서 읽음
-t [[CC]YY]MMDDhhmm[.ss] : 시간을 직접 입력

 

+ Recent posts