꾸준한 개발자

계속적인 성장을 추구하는 개발자입니다. 꾸준함을 추구합니다.

계속 쓰는 개발 노트

시스템 프로그래밍 18

쉘(shell) 사용법 - 리눅스 파일 시스템

cp 파일을 복사할 수 있는 명령어입니다. ex) cp -rf 디렉토리 안에 있는 서브 디렉토리들도 강제적으로 복사합니다. rm 파일을 삭제합니다. 하드링크: l(엘)n A B inode가 같은 파일을 복사해서 생성합니다. 물리적 공간을 아낄 수 있다는 장점이 있습니다. A를 삭제해도 B에 접근할 수 있습니다. 소프트(심볼릭) 링크: l(엘)n -s A B windows OS의 바로가기와 동일합니다. A를 삭제하면 B는 접근 불가가 됩니다. inode 값은 다르게 생성됩니다. 특수파일 디바이스를 가리키는 파일입니다. 1. 블록 디바이스(Block Device) : 저장매체와 같습니다. HDD, CD/DVD와 같이 블록 또는 섹터 등 정해진 단위로 데이터를 전송합니다. IO 송수신 속도가 높습니다. 2. ..

리눅스 파일 시스템

리눅스는 모든 것은 파일이라는 철학을 따릅니다. 모든 인터렉션은 파일을 읽고, 쓰는 것처럼 이루어져 있습니다. 마우스, 키보드와 같은 모든 디바이스 관련된 기술도 파일과 같이 다루어집니다. 모든 자원에 대한 추상화 인터페이스로 파일 인터페이스를 활용합니다. 또한 리눅스는 전역 네임스페이스를 사용한다고 공부했습니다. (ex. /media/floofy/geumyong/jpg.) 슈퍼블록, inode와 파일 슈퍼블록: 파일 시스템의 정보입니다. 파일: inode 고유값과 자료구조에 의해 주요 정보를 관리합니다. '파일이름:inode'로 파일이름은 inode 번호와 매칭됩니다. 파일 시스템에서는 inode를 기반으로 파일에 접근합니다. inode 기반 메타 데이터를 저장합니다. inode 기반 메타 데이터는 위..

쉘 사용법 - 리눅스 프로세스

바이너리란 코드 이미지라 불리기도 하며 실행 파일을 말합니다. 저장 매체에 저장돼 있는 파일을 바이너리라 합니다. 프로세스는 모든 코드가 메모리에 올라간 상태에서 CPU에서 한 줄 한 줄 실행 중인 프로그램을 말합니다. 리눅스는 기본적으로 다양한 프로세스가 실행됩니다. 여러 프로그램이 서로 유기적으로 각자의 일을 수행하면서 전체 시스템이 동작하도록 하는 모델입니다. foreground process / background process foreground process : 쉘(shell)에서 해당 프로세스 실행을 명령한 후, 해당 프로세스 수행 종료까지 사용자가 다른 입력을 하지 못하는 프로세스입니다. background process: 사용자 입력과 상관없이 실행되는 프로세스입니다. 쉘(shell)에서..

쉘 (shell) 사용법 - 리다이렉션(redirection)과 파이프(pipe)

리눅스 리다이렉션(redirection)과 파이프(pipe)과 관련해서 알아보겠습니다. Standard Stream (표준 입출력) command로 실행되는 프로세스는 세 가지 스트림을 가지고 있습니다. 1. 표준 입력 스트림 (Standard Input Stream) - stdin 2. 표준 입력 스트림 (Satandard Output Stream) - stdout 3. 오류 출력 스트림 (Standard Error Stream) - stderr 모든 스트림은 일반적인 plain text로 console에 출력하도록 되어있습니다. Redirection (리다이렉션) 표준 스트림 흐름을 바꿔줄 수 있습니다. 주로 명령어 표준 출력을 화면이 아닌 파일에 쓸 때 사용합니다. ex) ls > files.txt..

쉘 (shell) 명령어

쉘이란 사용자와 하드웨어 또는 운영체제간의 인터페이스를 말합니다. 사용자의 명령을 해석해서 커널에 명령을 요청해주는 역할을 하며, 관련된 시스템콜을 사용해서 프로그래밍이 작성되어 있습니다. 쉘 종류 Bourne-Again Shell (bash) : GNU 프로젝트의 일환으로 개발됐습니다. 리눅스에서 거의 default로 돼있습니다. Bourne shell (sh) C shell (csh) Korn Shell (ksh) : 유닉스에서 가장 많이 사용합니다. 리눅스 기본 명령어 정리 다중 사용자 관련 명령어에 대해서 알아보겠습니다. whoami 사용자가 누구인지 알려주는 명령어입니다. passwd 로그인한 사용자 ID의 암호를 변경합니다. useradd 사용자 기본 설정을 자동으로 하지 않습니다. addus..

유닉스/리눅스 기본 구성

리눅스와 파일 리눅스는 모든 것은 파일이라는 철학을 따릅니다. 모든 인터렉션은 파일을 읽고, 쓰는 것처럼 이루어져 있습니다. 마우스, 키보드와 같은 모든 디바이스 관련된 기술도 파일과 같이 다루어집니다. 또한 리눅스는 전역 네임스페이스를 제공합니다. 파일 시스템은 inode 고유값과 자료구조에 의해 주요 정보를 관리합니다. 리눅스와 프로세스 리눅스 실행 파일 포멧을 ELE(Excutable and Linkable Format)이라 합니다. 콜스택, 코드(텍스트), 데이터 및 BSS 섹션 등을 갖습니다. 또한 다양한 시스템 리소스를 처리할 수 있습니다. 시스템 콜 호출을 통해서 리소스 처리를 할 수 있습니다. 타이머, 시그널, 파일, 네트워크, 디바이스, IPC 기법 등을 관리할 수 있습니다. 리눅스는 가..

리눅스의 배경

리눅스는 리누스 토발즈가 개발했습니다. 대학에 있는 UNIX 컴퓨터를 집에서 쓰고 싶다는 마음에 운영체제를 만들었습니다. 컴퓨터의 응답 시스템을 최소화해서 다중 사용자, 다중 작업을 지원하는 즉, 시분할 시스템과 멀티 태스킹을 지원하는 운영체제를 개발하였습니다. GNU프로젝트 GNU란 Gnu is Not Unix의 줄임말입니다. 유닉스 운영체제를 여러 회사에서 각자 개발했으며, 소스를 공유하지 않았습니다. 이때 리차드 스톨만이라는 사람이 이러한 문화에 반발해서 초기 컴퓨터 개발 공동체의 상호협력적인 문화를 주장하며 1985년도에 GNU 선언문을 발표했습니다. 그러면서 GNU 프로젝트를 시작하게 되고 이 프로젝트를 지원하기 위해서 자유 소프트웨어 재단(FSF)를 설립하고 GNU 공개 라이선스(GPL)라는 ..

리눅스를 배워야 하는 이유

리눅스는 서버에 많이 사용되는 운영체제입니다. client에서 server로 html 파일을 요청하고 server에서 html 파일을 전달하면서 웹 브라우저에서 화면을 볼 수 있게 됩니다. 이러한 server에서는 주로 리눅스를 사용합니다. 또한 프로그래밍을 할 때에도 많이 사용이 됩니다. c언어의 경우 컴파일러를 통해서 컴퓨터가 이해할 수 있는 기계어로 바꿔주어야 됩니다. 이때 문제점이 컴파일러가 코드를 변환하는 과정에서 많은 시간이 소요됩니다. window와 mac os의 경우에는 사용자 중심이다 보니 여러가지 다양한 프로그램을 설치해야 합니다. 그에 반해 리눅스의 경우 kernel, shell, system 기본 프로그램 정도만 설치하고 컴파일을 돌리기 때문에 시간 소요가 짧습니다. 요즘에는 클라우..