목록Programming/Operating System (12)
Be ready to study forever - 개발자 꿈나무
주석 #로 시작하며 #가해당하는 줄은 모두 주석처리 번수 선언 - 변수명=데이터(띄워쓰기 안됨) 사용 - $변수명 **php의 문법과 유사함 리스트형 변수(배열) 선언 – 변수명=(데이터1 데이터2 데이터3) **보통의 프로그래밍 언어 문법과 다르게 데이터 간에 쉼표(,)대신에 띄어쓰기 사용 사용 - ${변수명[인덱스]} 사전 정의된 지역변수들 파라미터 전달은 쉘 스크립트 실행시에 한다 ./test.sh param1 param2 10 20 30 $1 $2 $3 $4 $5 ->이와 같은 형태로 순서대로 내부에서 사용가능 연산자 expr를 사용하여 숫자를 계산할 수 있다. 이때에는 ``(작은따옴표 아님)를 사용하여 감싸야한다. 그리고 연산자 * 와 ( ) 앞 에는 \(역슬레시)를 써 주어야 한다. 그리고, ..
유저 관련 명령어 whoami – 사용자가 누구인지 알려줌 passwd – 유저 패스워드 변경 adduser [새로 만들 사용자 이름] – 사용자를 기본설정으로 추가 useradd [새로 만들 사용자 이름] – 사용자 매뉴얼설정으로 직접 추가 su [유저이름] – 유저변경 sudo [다른 명령어] – 관리자(root) 권한으로 다른 명령어를 실행한다 man [다른 명령어] – 해당 명령어에 대한 매뉴얼(사용법) 설명이 나옴 ex) man rm - rm관련된 명령어 사용법이 나옴 파일 관련 명령어 pwd – 현재 디렉토리 cd [디렉토리] – 디렉토리 이동 ls – 현재 디렉토리 파일 목록 출력 ** ls 옵션 ex) ls -al ** ls는 와일드 카드를 사용하여 원하는 파일만 출력 가능 *는 문자열 ?..
하드링크 와 소프트링크 하드링크/소프트링크는 일종의 복사이지만 일반적인 파일 복사(cp명령어)와 다른 점은 원본파일 수정시에 복사본에도 반영된다는 점이다. 그렇다면 하드링크와 소프트 링크의 차이점은 무엇? 하드링크와 소프트링크의 inode참조방식을 안다면 이해가 쉽다. 하드링크는 아이노드 구조 자체를 참조하지만, 소프트링크는 아이노드 주소(?)값을 참조한다. 얕은복사 깊은복사와 비슷한 느낌 일반 복사(cp명령어) 하드링크(ln명령어) 소프트링크(ln -s 명령어) 원본 변경시 사본에 반영되지 않음 원본 변경시 사본에 반영 원본 변경시 사본에 반영 원복 삭제시 복사본 살아있음 원복 삭제시 복사본 살아있음 원복 삭제시 복사본 접근불가 파일 복사 명령어 cp [복사할 파일] [사본의 이름] – 파일을 복사함 ..
프로세스 관리 &제어(foreground process, background process) - foreground process 해당 프로세스가 종료될 때 까지 사용자가 다른 입력을 못함 - background process 해당 프로세스가 실행중에도 유저는 입력 가능 background process의 사용예) 프로세스 실행 명령 끝에 &를 붙임 foreground process 제어 [CTRL키] + Z – 현재 실행중인 foreground process 중지 [CTRL키] + C – 현재 실행중인 foreground process 종료 프로세스 관련 명령어 jobs – 현재 실행중 또는 중지중인 프로세스 출력 bg – 중지된 프로세스를 background process로 실행 ps [옵션] – 프..
리다이렉션과 파이프 리다이렉션이란? 입출력시에 디폴트로 설정되어 있는 표준 스트림(인풋/아웃풋)을 바꿔줄 수 있다. 예를 들어 ls -al로 출력되는 파일 목록을 test.txt파일에 담고 싶다고 하면 ls -al > test.txt로 쓴다면 text.txt파일에 ls -al로 출력되는 리스트를 화면 대신에 test.txt에 출력(표준 스트림 흐름을 바꿈)할 수 있다. 사용방법 > 는 출력 스트림을 변경, >는 출력 스트림 변경(추가), test.txt - A > B # A의 내용을 B에 출력(B의 내용에 추가) ex) ls -al >> test.txt - A files2.txt **files.txt를 head로 출력..
파일 권한 ls -al 명령어를 사용할 경우 이와 같은 리스트를 볼 수가 있음. 여기서 drw-r—r—와 같은 정보는 파일에 대한 권한 정보임. 첫번째 문자는 파일의 속성을 정의하는 문자임 나머지 아홉개의 문자는 사용자별 권한을 설정한 값임 파일소유자/그룹/일반사용자 순으로 3글자씩 끊어서 rwx를 설정한다. r – 읽기 권한 부여 w – 쓰기 권한 부여 x – 실행 권한 부여 ** -는 해당 위치에 아무 권한도 부여하지 않음 ex) drwxrw-r--는 파일 속성은 디렉토리이며 파일 소유자에게는 rwx(읽기,쓰기,실행), 그룹에게는 rw(읽기,쓰기), 일반 사용자에게는 r(읽기)를 허용함 파일 소유자 그룹 일반 사용자 rwx rw r 읽기,쓰기,실행 가능 읽기,쓰기 가능 읽기만 가능
파일 시스템이란? 운영체제가 효과적으로 저장매체에 파일을 쓰기 위한 자료구조와 알고리즘을 파일 시스템이라고 한다. 생소하지만 Linux에서는 파일, 디랙토리, I/O디바이스(마우스, 모니터, 키보드등), 네트워크등 모든 것을 파일로서 정의한다. 따라서 모니터나 키보드에 접근하는 명령어도 파일에 접근하는 명령어와 동일하며 실제로 디랙토리의 /dev로 가면 키보드, 모니터 등이 파일로 존재한다. 파일시스템의 종류 운영체제마다 구현하는 파일 시스템이 다름. Windows – FAT, FAT32, NTFS – 블록 위치를 FAT라는 자료구조에 기록 Linux(Unix): ext2, ext3, ext4 – 일종의 인덱스 블록 기법인 inode 방식 사용 inode 방식 파일 시스템 inode 방식의 파일 시스템은..
가상메모리란? 하나의 프로세스는 4GB의 크기를 가지고 있는데, 4GB의 프로세스 여러 개를 전부 메모리에 올려놓고 사용하는 것은 자원낭비임. 가상 메모리는 실제 메모리 보다 많아 보이게 하는 기술로, 실제 메모리에서는 가상 메모리의 필요한 부분만 ‘부분적으로’ 올려놓고 사용하게 된다. 프로세스의 구조로 4GB의 가상의 메모리 공간을 가지게 된다 그럼 가상메모리와 실제 메모리는 어떻게 연결이 되는걸까? – 정답은 MMU MMU(Memory Management Unit) MMU는 CPU에서 코드 실행시, 가상 주소 메모리 접근이 필요할 때, 해당 주소를 물리 주소값으로 변환해주는 하드웨어 장치 페이징이란? 크기가 동일한 페이지 단위로 가상 주소 공간과 이에 매칭되는 물리 주소 공간을 관리한다.(리눅스에선 ..
스레드란? 스레드는 Light Weight Process라고도 불리며, 프로세스보다 작은 단위의 작업이다. 그러므로, 프로세스는 여러 개의 스레드를 가질 수 있다. 하나의 프로세스를 멀티 스레드로 여러 작업으로 만들면 작업 효율을 높일 수 가 있다. 하지만, 단점으로는 너무 많은 스레드를 돌리게 되면 컨택스트 스위칭이 많이 발생할 수 있기 때문에 더 작업이 느려 질 가능성이 있다. 그림에서 보듯 스레드는 프로세스안에 작은 단위로 존재하고 프로세스의 Stack영역에 별도의 공간을 가지게 된다. 이럴 경우, 부모 프로세스의 Heap영역, Data영역을 공유하므로 프로세스간 데이터 접근이 불가능한 것과는 다르게 다른 프로세스로 접근이 가능하다. 프로세스 vs 스레드 - 프로세스는 독립적, 스레드는 프로세스에 ..
프로세스 구조 컨택스트 스위칭 CPU에 실행할 프로세스를 다른 프로세스로 교체하는 기술 ** 하지만 Running상태에서 Ready상태로, Ready상태에서 Running상태로 바뀐 프로세스는 어떻게 멈춘 지점부터 바로 CPU에서 읽을 수 있는 걸까? 정답은 – PC(Program Counter)와 SP(Stack Pointer)에 있다. 이 값들은 CPU에서 읽어 들이는 값을 가르킴. 따라서 CPU는 PC와 SP의 값을 순서대로 읽고 계산하게 된다. - PC – 프로세스 카운터는 프로세스의 Text영역에서 다음에 실행할 코드의 주소를 가르키고 있다. - SP – 스택 포인트는 프로세스의 Stack영역의 끝주소, 즉 최근에 스택에 영역에 들어온 데이터가 있는 주소를 가르 키고 있다 ** 그렇다면 컨택스트..