Backend_Roadmap_OS(+파일시스템)

2023. 3. 22. 20:54CS/Backend-RoadMap

728x90

OS

  • Operation System
  • 운영체제
  • 컴퓨터 하드워어 구성 요소와 사용자 간의 인터페이스 역할을 하는 소프트웨어
  • 응용프로그램(메모장, msOffice 등)이 실행되기 위한 환경

 

OS 종류

  • 윈도우, 안드로이드, IOS, MAC OS, 리눅스, 크롬 OS 등

 

OS 유형

  • 배치 처리 시스템
    • 여러 프로그램을 등록 시키고 한 프로그램이 종료되면 순차적으로 실행되도록 하는 시스템
    • 단점
      • 앞단에 실행 시간이 많이 필요한 응용 프로그램이 실행 될 경우 응답시간이 오래 걸릴 수 있음
      • CPU가 필요 없는 시간대에도 응용 프로그램이 CPU를 점유하고 있을 수 있어 실행 시간이 오래 걸릴 수 있음
  • 멀티태스킹/시분할 시스템
    • 시분할 시스템
      • 다중 사용자를 지원하는 것이 목적
      • 응용 프로그램이 CPU를 점유하는 시간을 쪼개어 실행
    • 멀티 태스킹
      • 단일 CPU에서 여러 응용 프로그램의 병렬 실행을 가능하게 하는 것이 목적
      • 시간대비 CPU 사용률을 높이는 데 적절한 시스템
      • CPU가 쉬는 동안 다른 응용 프로그램 실행
  • 멀티프로세싱
    • 두개 이상, 다수의 프로세서가 협력적으로 작업을 동시에 처리하는 것
    • 각 프로세서가 하나의 작업만 처리 하는 것이 아니라 다수의 작업을 처리
      • = 하나의 작업은 여러 프로세서에 의해 처리
    • 장점
      • 여러 프로세스가 처리되어야 할때 동일 데이터를 사용할 경우 해당 데이터를 하나의 디스크에 두고 모든 프로세서가 이를 공유하도록 하면 비용적으로 저렴
      • 하나의 프로세서가 고장 나도 속도가 느려질뿐 작업이 정지 되지 않음 (신뢰성)
       

  • 실시간 시스템
    • RTOS
    • 주어진 문제를 해결하기 위해 정해진 시간 처리하는 운영체제
    • 특징
      • 실행 시간 예측이 가능하며 실시간성을 띔
      • 시스템의 응답 속도, 인터럽트 등에서도 성능이 우수
      • 모듈화, 선점형 멀티 태스킹, 스케줄링, 통합 개발 환경 등을 지원
      • 한가지 목적에 최적화
      • ROM에 프로세스와 커널을 담아 주소 공간을 공유
      • 임베디드 시스템에 적합
    • 종류
      • VxWorks, OSE, Embedded Linux, RTLunux 등
  • 분산 컴퓨팅
    • 로컬 자원을 사용하는 것과 동일하게 원격 자원 사용
    • 분산 시스템
      • 통신 네트워크를 통해 서로 약하게 결합된 프로세서들의 집합
      • 각 프로세서는 메모리와 클럭을 공유하지 않음
      • 목적
        • 자원 공유
        • 연산속도 향상
        • 신뢰성 향상
        • 통신의 용이성
  • 네트워크 OS
    • 구성된 네트워크 환경에서 서버와 클라이언트간의 원활한 통신을 보장하기 위하여 자원공유 서비스 및 각 클라이언트의 관리기능을 제공하는 네트워크 운영체제
    • 서버 운용 형태별 분류
      • Peer To Peer 방식
      • Client&Server 방식
    • 종류
      • microsoft windows server 2003, linux, mac os x
  • 모바일 OS
    • 스마트폰, 태블릿 컴퓨터, PDA 등의 운영체제
    • 종류
      • Android, IOS 등

OS 기능

  • 프로세스 관리
    • OS에서 동시에 실행되는 많은 프로세스를 효율적으로 관리
  • 메인 메모리 관리
    • 메모리 추적, 프로세스에 따른 메모리 할당
  • 파일 관리
    • 파일 생성, 수정, 삭제, 조작, 백업 등
  • I/O 시스템 관리
    • 버퍼 캐싱 시스템 제공, 장치 드라이버 제공
  • 보조 스토리지 관리
    • 스토리지 할당, 여유 공간 관리, 디스크 스케줄링
  • 보안 관리
    • 시스템 보호 및 오류로 인한 시스템 손상 방지
  • 명령 해석 시스템
    • 사용자와 시스템 간의 인터페이스, 인터프리터 쉘 등
  • 네트워크 관리
    • 네트워크 서비스 성능, 오류 분석, 프로비저닝, 품질 관리 등

OS 중요 기능

  • 자원 할당
  • 정보 및 자원 보호
  • 오류 감지 및 처리
  • 파일 시스템 조작
  • I/O 작업 처리
  • 메모리 관리, 가상 메모리 멀티 테스킹
  • 프로그램 실행
  • 디스크 엑세스 및 파일 스스템 허용 장치 드라이버 네트워킹 보안

OS 장단점

  • 장점
    • 추상화를 생성하여 하드워어 세부 정보 은닉
    • GUI로 쉬운 사용
    • 사용자가 프로그램 및 어플리케이션을 실행할 수 있는 환경 제공
    • 응용프로그램과 하드웨어 구성 요소간 중개자 역할
    • 컴퓨터 시스템 리소스 제공
  • 단점
    • OS에 문제 발생시 해당 시스템에 저장된 내용 손실 가능성
    • 비용

커널

  • 컴퓨터 자원을 관리하는 운영체제의 핵심 부분
  • 사용자가 system call을 통해 컴퓨터 자원을 사용할 수 있게 해주는 자원관리자

커널 기능

  • task 관리자
    • CPU를 task라는 추상적인 자원으로 제공
  • 메모리 관리자
    • 메모리를 segment나 page로 제공
  • 파일 시스템
    • 네트워크 장치를 소켓으로 제공
  • 디바이스 드라이버 관리자
    • 각종 장치를 디바이스 드라이버를 통해 일관성 있게 접근하도록 제공

커널 특징

  • 낮은 수준의 프로세스 스케줄링
  • 프로세스 간 통신
  • 프로세스 동기화
  • 컨텍스트 전환

커널 종류

  • 모놀리식 커널
    • 하드웨어 위에 고수준의 가상 층을 가짐
      • 가상 층 : 기본 연산 집합과 관리자 모드에서 작동하는 프로세스 관리, 동시성, 메모리 관리 등의 운영체제 서비스 구현을 위한 시스템 콜로 되어 있음
    • 연산들을 제공하는 모듈이 같은 주소 공간에서 실행됨
      • 코드 집적도가 조밀함
      • 수정이 어려움
      • 한 모듈 버그는 다른 모듈로 전이 될 수 있음
      • 신뢰할 수 있으면 내부 집적이 시스템 이용을 효과적이게 하여 높은 효율 제공
       

  • 마이크로 커널
    • 운영체제의 커널을 가능한 작게 만드는 것을 중점적으로 고려한 구조
    • 하드웨어 위에 매우 간결한 추상화만 제공
    • 장점
      • 전체 운영체제의 크기가 줄어듬
      • 시스템의 안정성과 보안성이 높아짐
    • 단점
      • 사용자 레벨에서 구현되는 기능들은 오버헤드 발생 가능
      • 전체적인 성능 저하 가능성
       

  • 하이브리드 커널
    • 본질적으로 마이크로 커널을 따르지만, 사용자 레벨에서 수행 될 때 느린 코드들을 커널 레벨에서 수행하도록 수정한 것
    • 모놀리식 커널과 마이크로 커널의 장점을 결합한 구조
    • 장점
      • 모놀리식 커널의 높은 성능
      • 마이크로 커널의 안정성과 보안성
       

  • 엑소 커널
    • 수직 구조의 운영체제
    • 여러 개의 가상화를 실행하는데 각 가상화는 하드웨어 추상화 계층을 통하지 않고 하드웨어 구역에 직접 접근
      • 사용자 공간에서 프로세스와 드라이버를 실행시키는 방식
    • 장점
      • 높은 안정성, 보안성
      • 성능저하 최소화
      • 모듈화와 확장성

OS 시스템 콜

  • 응용 프로그램은 OS가 제공하는 인터페이스를 통해서만 자원을 사용 가능 → 시스템 콜 : OS가 제공하는 이러한 인터페이스
  • 커널 영역의 기능을 사용자 모드가 사용 가능하게, 즉 프로세스가 하드웨어에 직접 접근해서 필요한 기능을 사용할 수 있게 함

유형

  • 프로세스 제어
    • 종료(exit), 중지(abort)
    • 적재(load), 실행(execute)
    • 프로세스 생성
    • 프로세스 속성 획득과 설정
    • 시간 대기
    • 사건 대기
    • 사건 알림
    • 메모리 할당 및 해제 : malloc, free
  • 파일 조작
    • 파일 생성, 파일 삭제
    • 열기, 닫기
    • 읽기, 쓰기, 위치 변경
    • 파일 속성 획득 및 설정
  • 장치 조작
    • 하드웨어의 제어와 상태 정보 획득(ioctl)
    • 장치 요구, 장치 방출
    • 읽기, 쓰기, 위치 변경
    • 장치 속성 획득 및 설정
    • 장치의 논리적 부착 및 분리
  • 정보 유지보수
    • getpid(), alarm(), sleep()
    • 시간과 날짜의 설정과 획득
    • 시스템 데이터의 설정과 획득
    • 프로세스 파일, 장치 속성의 획득 및 설정
  • 통신
    • pipe(), shm_open(), mmap()
    • 통신 연결의 생성, 제거
    • 메시지 송수신
    • 상태 정보 전달
    • 원격 장치 부착 및 분리
  • 보호
    • chmod()
    • umask()
    • chown()

파일 시스템

  • 컴퓨터에서 파일이나 자료를 쉽게 발견할 수 있도록, 유지 및 관리하는 방법

파일 시스템 목표

  • 다양한 저장 장치 유형에 대한 I/O 지원을 제공
  • 데이터 손실 또는 파괴 가능성 최소화
  • OS가 사용자 프로세스를 위한 표준화된 I/O 인터페이스 루틴을 지원
  • 다중 사용자 시스템 환경에서 다중 사용자를 위한 I/O 지원을 제공

파일 시스템 특징

  • 커널 영역에서 동작
  • 파일 CRUD 기능을 원활히 수행하기 위한 목적
  • 계층적 directory 구조
  • 디스크 파티션 별로 하나씩 둘 수 있음

파일 시스템 속성

  • 파일은 디스크나 다른 저장소에 저장되며 사용자가 로그오프 해도 사라지지 않는다
  • 파일에는 이름이 있으며 제어된 공유를 허용하는 엑세스 권한과 연결 되어있다.
  • 파일 사이의 관계를 반영하기 위해 파일을 정렬하거나 더 복잡한 구조를 만들 수 있다.

파일 구조

  • 텍스트 파일
    • 줄로 구성된 일련의 문자
  • 개체 파일
    • 블록으로 구성된 일련의 바이트
  • 소스 파일
    • 일련의 기능과 프로세스

파일 속성

  • 이름
    • 사람이 읽을 수 있는 형태로 저장된 유일한 정보
  • 식별자
    • 파일 시스템 내의 고유한 태그 번호
  • 위치
    • 장치의 파일 위치
  • 유형
  • 크기
    • 파일의 크기를 표시
  • 보호
    • 파일 읽기, 쓰기 및 실행에 대한 엑세스 권한 할당 및 제어
  • 시간, 날짜 및 보안
    • 보호, 보안에 사용
    • 모니터링에 사용

파일 유형

  • 캐릭터 특수 파일
    • 마우스, 프린터 등 문자단위로 데이터를 읽거나 쓰는 하드웨어 파일
  • 일반 파일
    • 사용자 정보를 저장
    • 텍스트, 실행 프로그램 및 데이터베이스가 될 수 있음
    • 사용자가 추가, 삭제 및 수정과 같은 작업 수행가능
  • 디렉토리 파일
    • 디렉터리에는 파일 및 해당 파일에 대한 기타 관련 정보가 포함되어 있음
    • 기본적으로 여러 파일을 보관하고 구성하는 폴더
  • 특수 파일
    • 장치 파일이라고도함
    • 프린터, 디스크, 네트워크, 플래시 드라이브 등과 같은 물리적 장치

파일 시스템 자료 구성의 단위

  • bit → nibble → byte → word → field → record → file
  • bit
    • 자료 표현의 최소 단위
    • 0 또는 1
  • nibble
    • 4 bit
  • byte
    • 문자 표현의 최소 단위
    • 8bit
  • word
    • 컴퓨터가 한번에 처리할 수 있는 명령 단위
    • 운영체제에 따라 크기가 다르다
  • field
    • 파일 구성의 최소 단위
  • record
    • 하나 이상의 필드가 모여 구성
  • file
    • 하나 이상의 레코드가 모여 구성

디스크 구조

  • 트랙
    • 데이터가 기록되는 부분
    • 다수의 섹터로 구성
  • 섹터
    • 자체적으로 주소를 가지고 있는 스토리지 단위
  • 실린더
    • 각 드라이브 플래터 표면에 동일한 트랙들의 집합
    • 헤드는 실린더 번호를 참조함

파일 접근 방법

  • 순차 접근
    • 파일의 정보가 레코드 순서대로 처리
    • 카세프 테이프 사용법과 동일
      • 현재 위치에서 읽거나 쓰면 offset이 자동으로 증가
      • 뒤로 돌아가기 위해 되감기가 필요
    • 연산
      • read next
        • 앞의 방향으로 작동
      • write next
        • 앞의 방향으로 작동
      • reset
        • pointer 초기화
       

  • 직접 접근
    • 파일의 레코드를 임의의 순서로 접근
    • 순서에 상관 없이 빠르게 읽고 쓸수 있다
    • 현재 위치를 가리키는 변수만 유지하면 순차 파일 기능 쉽게 구현 가능
    • 대규모 접근 시 유용
      • 데이터 베이스에 활용
    • 연산
      • read n
        • n 번째 접근
      • write n
        • n 번째 접근
      • position to n
        • n 번째 위치로 pointer 이동
      • rewrite n
       

  • 색인 접근 (index access)
    • 파일에서 레코드를 찾기 위해 index를 먼저 찾고 대응되는 포인터를 얻는다.
    • 얻은 포인터를 통해 파일에 접근하여 데이터 획득
    • 크기가 큰 파일을 입, 출력 탐색할 수 있음

 

파일 시스템 디스크 공간할당

  • 디스크에 파일을 저장할 때 파일의 블록들의 배치를 결정하는 것
    • 파일은 저장장치에 블록 단위로 산재되어 저장
    • 효율적으로 저장해야 입출력 속도 향상
  • 연속할당
    • 임의의 한 파일을 위해 디스크 내에 선형적으로 연속된 블록 할당
    • 장점
      • 연속할당되는 파일을 접근하기 위한 디스크 탐색횟수 최소화
      • 연속하는 논리적 블록들이 물리적으로 인접 → 빠른 엑세스 가능
      • 디렉토리가 단순히 시작 블록 주소와 파일의 길이만 파악하고 있으면 됨 → 디렉토리 구현 단순화
  • 불연속 할당
    • 임의의 한 파일을 위해 디스크 내에 산재된 블록을 연결해 할당
    • 블록이 디스크 내 어디에 있어도 엑세스 가능
    • 종류
      • 연결 할당
        • 리스트 혹은 인덱싱 방법 이용
        • 리스트 사용시 하나의 블록은 디스크 상 섹터로 대응 되지만 임의의 한 파일에 속해 있는 여러 섹터들이 포인터로 서로 연결
        • 장점
          • 파일을 확장할 때도 자유 공간 리스트로부터 블록을 얻어 연결리스트에 추가
          • 파일이 축소되면 사용하지 않게 되는 블록을 자유 공간 리스트로 반납
          • 단편화 발생하지 않고 압축 불필요
            • 단편화: 기억장치의 빈 공간 또는 자료가 여러개의 조각으로 나뉘는 현상 → 읽기 쓰기 속도 지연 유발
      • 색인 할당
        • 색인 블록에 디스크 블록 포인터(섹터 주소)를 모아두어 포인터가 산재되어 비효율적 연결 할당의 단점 해결
        • 각 파일은 해당 파일을 구성하는 디스크 섹터들의 주소로 이루어진 자신만의 색인 블록 소유
        • 장점
          • 탐색이 색인 블록 자체에서 발생하여 빠르다
        • 단점
          • 블록을 삽입하려 할 때 색인 블록을 완전히 재구성해야함
          • 작은 파일의 경우 섹터의 공간이 낭비되어 기억장치가 낭비됨
          • 색인 블록인 다룰수 있는 블록의 개수를 초과하는 큰 파일의 경우 처리 불가
      • 간접 색인
        • 색인 할당의 파일 크기 제한 해결 방안
        • 상위 색인 파일이 하위 색인 파일을 인덱싱
        • 간접 색인 단계가 증가할 수록 저장 파일 크기가 커짐
  • FAT(File Access Table)
    • 파티션 시작 부분에 위치
    • FAT의 각 테이블 항목이 디스크의 각 블록에 하나씩 대응
    • 디스크 헤드가 FAT의 정보를 읽어 임의의 블록 위치 파악 가능
  • 빈 공간 관리
    • 디스크 상의 공간을 할당하고 회수하여 관리하는 작업
    • 파일들이 디스크 공간을 할당 받고 남은 공간을 비워둔채 방치하면 단편화 발생
      • 단편화된 공간을 주기적으로 압축할 필요 있음
    • 빈 공간 관리 방법
      • 연결리스트
        • 자유공간을 리스트로 유지 및 관리
        • free-space list head라는 커널 내 변수를 통해 처음 나오는 빈공간에 대한 포인터 보유, 그후 순차적으로 다음 빈공간에 접근 가능
        • 특정 위치의 빈공간을 찾아가기 위해 링크를 많이 따라가야한다는 성능상 한계점 존재
      • 그루핑
        • 맨 처음 빈 블록에 n개의 블록에 대한 주소 기입
          • n-1개는 빈 공간의 블록 주소
          • 마지막 1개는 n개의 빈 공간에 대한 주소를 포함하고 있는 블록의 주소를 기입해 연결
      • 비트맵(비트벡터)
        • 비트맵 상의 각 비트를 저장 공간 상의 블록에 맵핑하고 해당 섹터가 할당되면 표시한다.
        • 비트 연산을 이용하여 속도 향상 가능
        • 비트맵은 메인 메모리에 존재해야함
          • 메모리 용량 소비 문제 존재
      • 계수(counting)
        • 임의의 빈 블록이 있다고 했을 때 해당 블록에 대한 주소와 그로부터 연속해 할당 될 수 있는 빈 블록의 개수만 리스트에 기록해 관리
        • 빈 공간에 대한 목록이 작아지는 장점
      • 공간맵
        • 대규모 파일, 디렉토리, 파일시스템 자체를 저장할 수 있도록 설계됨
        • Space map은 디스크의 각 블록을 매핑하는 큰 비트맵으로, 맵의 각 비트는 디스크의 블록을 나타냄
        • 비트가 설정되면 해당 블록이 사용 중인 것을 의미하고, 설정되지 않으면 해당 블록이 빈 것을 의미
        • Space map은 비트 연산을 사용하여 쉽게 조작할 수 있기 때문에 빈 공간을 효율적으로 관리 가능

터미널 명령어 정리

  • 연습 사이트
  • https://cmdchallenge.com/#/current_working_directory
  • 명령어
    • https://www.hostinger.com/tutorials/linux-commands
      디렉터리 구조 이동 cd
      디렉토리 생생 mkdir
      파일 생성 touch
      파일 복사 cp
      파일 이동 mv
      파일 및 디렉토리 삭제 rm
      특정 url 파일 다운로드 curl
      텍스트 검색 grep
      페이지별 파일 내용 보기 less
      cat  
      텍스트 스트림 조작 및 변환 awk
      tr  
      sed  
      디렉토리 내용 나열 ls
      수퍼 유저 권한 사용 sudo
      현재 작업 디렉토리 경로 pwd
      파일 검색 find
      디스크 용량 확인 df
      권한 수정 chmod
      프로그램 종료 kill

참고자료

https://www.guru99.com/os-tutorial.html

https://libertegrace.tistory.com/entry/운영체제-운영체제의-발전사배치-처리-시스템-시분할-시스템-멀티-태스킹

https://doorbw.tistory.com/26

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=rhkdals1206&logNo=221572073363

https://brokenbot.tistory.com/m/66

https://ko.theastrologypage.com/network-operating-system

http://www.tibs.co.kr/network/1/nos.htm

https://cocoon1787.tistory.com/685

https://jiravvit.tistory.com/entry/linux-kernel-1-커널kernel이란-1

https://velog.io/@hkh1213/OS-커널의-종류

https://www.hostinger.com/tutorials/linux-commands

https://dar0m.tistory.com/264

https://security-nanglam.tistory.com/454

https://velog.io/@yuseogi0218/File-System-파일-시스템

https://inuplace.tistory.com/383#디스크-공간할당

'CS > Backend-RoadMap' 카테고리의 다른 글

Backend-RoadMap_Web Security Knowlege  (0) 2023.04.11
Backend-RoadMap_APIs  (0) 2023.03.27
Backend-RoadMap_Scaling Databases  (0) 2023.03.23
Backend-RoadMap_About Database  (0) 2023.03.23
Backend-RoadMap_인터넷 개념 정리  (0) 2023.03.21