UNIX

happiyoung_·2026년 1월 30일

운영체제

목록 보기
11/11

1. UNIX

  • 범용성, 확장성 우수
  • C언어로 작성되어 시스템간의 이식과정을 단순화
  • 다양한 기능
  • 다중사용자, 다중작업, 대화형
  • 파일과 입출력장치를 동일 취급 (장치의존성 제거)
  • 유지보수 용이, 계층적파일시스템 (트리구조)

쉘 (shell)

  • 프로그래밍 계층에 존재, 사용자가 입력하는 명령어를 이해, 실행하는 역할 수행
  • 명령어 해석기
  • 주기억장치에 상주하지않고, 보조기억장치에 교체가능 (커널과의 차이점)

커널 (kernel)

  • 쉘을 포함한 응용프로그램에게 서비스 제공
  • 컴퓨터 부팅시 디스크로부터 주기억장치로 적재된 후 시스템이 꺼질때까지 항상 주기억장치에 상주
  • 대부분은 C, 일부는 어셈블리어

디스크 블록의 구조

  • 부트 블록 : 디스크의 첫번째 논리적인 블록
    • 유닉스가 첫번째로 활성화되는데 사용되는 약간의 실행코드 포함
  • 슈퍼블록 : 전체의 파일 시스템에 관한 정보를 가짐
    • 전체 블록의 수, 블록의 크기, 사용중인 블록의 수 등 파일 시스템의 정보를 가짐
  • i-node 블록 : 디스크상의 파일에 대응하는 모든 inode 리스트로 된 고정된 크기의 블록
  • 데이터 블록 : 실제 파일 블록을 저장하도록 사용, 디렉터리와 사용자 파일들 포함

파일 3가지 종류

1) 일반 파일 (regular file)

  • 데이터 파일 : 일반적으로 보게되는 파일로써 문자를 담고 있는 텍스트 파일로써 이진 데이터를 담고 있는 파일
  • 실행파일 : 실행될 수 있는 이진형식의 실행파일 (쉘스크립트같은 텍스트 형식의 파일)
  • 숨김 파일 : 개인의 환경설정 파일이나, 시스템의 설정파일 ( . 으로 시작)
  • 링크파일 : ms 윈도우의 바로가기 아이콘

2) 디렉터리 파일 (directory file)

  • 디렉터리 내에 들어 있는 파일 및 디렉터리에 대한 정보 포함
  • 디렉터리는 계층적으로 구성되며, 디렉터리 파일은 쓰기 보호 속성을 가진 일반 파일로써 파일 시스템만이 이 파일에 기록 가능 (사용자 프로그램은 읽기만 허용)

3) 특수 파일 (special file)

  • 프린터, 터미널, 디스크 같은 주변장치나 직렬포트등을 표현하는 파일

1) 하드링크 (hard link)

  • 파일을 생성하면 기본적으로 생성
  • 일반 파일 이름 + inode + 데이터블록이 존재하면 하드링크는 1
  • 일반파일은 기존 파일에 하드링크를 걸면 링크수 증가
  • 두개의 파일이름이 하나의 inode 같은 데이터 블록을 가리킴 → 시스템은 한 파일 이름에 대한 디렉터리 엔트리를 삭제하고 데이터 블록은 그대로 → rm 명령어 : 하드링크에 대한 링크개수만 하나 감소 → 실제 데이터 블록이 삭제되는 때는 그 링크의 개수가 0이 되는 시점

2) 심볼릭 링크 (symbolic link)

  • 특정 디렉터리 파일을 다른 디렉터리에서 실행하려면 그 파일에 대한 절대경로를 이용해 명시
  • 그 파일을 사용할 디렉터리로 복사
  • 파일의 불필요한 반복적 복사를 방지하여 파일 시스템을 유연하게 활용
  • 여러 디렉터리에서 동일한 라이브러리를 요구할 경우, 같은 파일을 여러사람이 공통으로 관리하면서 사용할 경우, 비슷한 역할을 담당하는 여러가지 파일들중하나를 선택하는 경우

inode의 내용

  • 파일의 유형 (일반, 디렉터리, 특수)
  • 파일의 보호 권한
  • 파일 소유권과 소유자 그룹 id / 사용자와 그룹의 표시
  • 하드링크계수, 파일에 대한 링크 수
  • 파일의 생성 시기, 최종 수정시간 및 최종 접근 시간
  • 일반 파일/ 디렉터리 파일인 경우 블록위치, 물리적 디스크 주소
  • 특수파일인 경우 주기억장치 및 보조기억장치 번호
  • 심볼릭 링크인 경우 심볼릭 링크의 값
  • 파일을 지정하고 있는 디렉터리 항의 수
  • (주의) 파일명은 없다!!!!

unix 명령어

명령어설명
creat새로운 파일을 생성한다.
exec새로운 프로세스를 만든다.
fork현재의 프로세스를 복제하여 새로운 자식 프로세스를 만든다.
chmod파일에 대한 개인, 그룹, 타인의 접근 권한을 변경한다.
chgrp파일의 그룹 소유권을 바꾼다.
chown파일의 소유권을 바꾼다.
ls파일의 목록을 보여준다.
cd경로를 변경한다.
cp파일을 복사한다.
cat파일의 내용을 화면으로 출력한다.
pwd현재 작업 중인 디렉터리 경로를 보여준다.
mkdir디렉터리를 만든다.
rmdir디렉터리를 제거한다.
rm파일을 삭제한다.
mv파일을 이동한다.
df마운트된 디스크 각 파티션의 용량과 사용량, 남은 용량을 볼 수 있다.
vi문서를 작성하거나 편집한다.
man도움말을 출력한다.
more주어진 파일의 내용을 한 화면씩 출력한다.
su시스템에 접속한 상태에서 재로그인 없이 다른 사용자 ID로 접속한다.
write특정 사용자와 대화를 시작한다.
find디스크에서 특정 파일을 찾아낸다.
ln특정 파일의 링크 파일을 만든다.
grep주어진 패턴을 포함하는 파일의 라인(행)을 찾아 출력시킨다.
wc특정 단어나 문자 또는 행의 수를 센다.
du특정 디렉터리에서 하부 디렉터리까지 포함한 디스크 사용량을 보여준다.
env현재 시스템 사용자들의 환경변수를 보여준다.
free가상 메모리를 포함한 메모리의 사용 현황을 보여준다.
id자신의 ID 번호와 자신이 속한 그룹의 ID를 보여준다.
kill현재 실행 중인 특정 프로세스를 종료한다.
ps사용자나 시스템 프로세스의 상태에 관한 정보를 출력한다.
loginID와 Password를 입력하여 시스템에 최초로 접속한다.
passwd로그인할 때 사용자의 비밀번호를 설정 및 변경한다.
logoutUNIX 작업을 종료하는 것으로 logout 또는 exit를 입력한다.
who현재 로그인해서 사용 중인 사용자의 이름을 표시한다.
date현재 날짜, 시간, 요일을 표시한다.
time명령의 실행 시간을 표시한다.

UNIX 디렉터리 보호

  • 각 SUB 디렉터리와 관련한 파일의 보호는 각각 3비트 (rwx)로 구성된 파일소유자, 프로젝트그룹, 일반 사용자들 3부분 정의
    • 파일 소유자 : 파일을 생성한 사용자
    • 프로젝트 그룹 : 파일에 대한 유사한 접근을 필요로 하는 사용자들의 집합
    • 일반 사용자 : 시스템에 있는 모든 다른 사용자들
  • 첫글자 - 는 일반파일 d는 디렉터리 파일
  • 하드링크수, 파일 소유자 이름, 그룹의 이름, 바이트 단위로 파일의 크기, 최종 변경 날짜, 파일명
  • chmod : 허가권을 변경하기 위한 명령어 chmod 741 [파일명]

프로세스간 통신

1) 파이프 pipe

  • 두개의 프로세스를 연결해주는 open file로서 파이프의 한쪽 끝에 쓰인 정보를 파이프의 다른쪽에서 읽을 수 있도록 한다.
  • 유닉스에서 프로세스들은 메일박스와 비슷하게 파이프를 통해서 프로세스 간에 통신하는 기법을 제공
  • shell 에게 앞의 명령의 출력이 후속되는 명령의 입력으로 넘겨주도록 조정하는 수직선 |

2) 소켓 socket

  • 종단간의 통신으로 네트워크를 통해서 다른 컴퓨터에 존재하는 프로세스와의 통신 제공
  • 클라이언트 프로세스는 통신 시작, 서버프로세스는 통신내용 수신

3) 시그널 signal

  • 하드웨어 인터럽트와 유사한 예외조건을 다루기 위한 소프트웨어 메커니즘
  • 프로세스에게 이벤트 발생을 실시간으로 알려주기위해 사용

동기 vs 비동기

  • 동기(Synchronous) : 작업을 요청한 뒤 결과가 나올 때까지 기다렸다가 다음 작업을 수행하는 방식
  • 비동기(Asynchronous) : 작업을 요청한 뒤 기다리지 않고 다음 작업을 수행하다가 결과가 준비되면 처리하는 방식

0개의 댓글