Backend_Roadmap_OS(+파일시스템)
2023. 3. 22. 20:54ㆍCS/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 next
- 직접 접근
- 파일의 레코드를 임의의 순서로 접근
- 순서에 상관 없이 빠르게 읽고 쓸수 있다
- 현재 위치를 가리키는 변수만 유지하면 순차 파일 기능 쉽게 구현 가능
- 대규모 접근 시 유용
- 데이터 베이스에 활용
- 연산
- read n
- n 번째 접근
- write n
- n 번째 접근
- position to n
- n 번째 위치로 pointer 이동
- rewrite n
- read n
- 색인 접근 (index access)
- 파일에서 레코드를 찾기 위해 index를 먼저 찾고 대응되는 포인터를 얻는다.
- 얻은 포인터를 통해 파일에 접근하여 데이터 획득
- 크기가 큰 파일을 입, 출력 탐색할 수 있음
파일 시스템 디스크 공간할당
- 디스크에 파일을 저장할 때 파일의 블록들의 배치를 결정하는 것
- 파일은 저장장치에 블록 단위로 산재되어 저장
- 효율적으로 저장해야 입출력 속도 향상
- 연속할당
- 임의의 한 파일을 위해 디스크 내에 선형적으로 연속된 블록 할당
- 장점
- 연속할당되는 파일을 접근하기 위한 디스크 탐색횟수 최소화
- 연속하는 논리적 블록들이 물리적으로 인접 → 빠른 엑세스 가능
- 디렉토리가 단순히 시작 블록 주소와 파일의 길이만 파악하고 있으면 됨 → 디렉토리 구현 단순화
- 불연속 할당
- 임의의 한 파일을 위해 디스크 내에 산재된 블록을 연결해 할당
- 블록이 디스크 내 어디에 있어도 엑세스 가능
- 종류
- 연결 할당
- 리스트 혹은 인덱싱 방법 이용
- 리스트 사용시 하나의 블록은 디스크 상 섹터로 대응 되지만 임의의 한 파일에 속해 있는 여러 섹터들이 포인터로 서로 연결
- 장점
- 파일을 확장할 때도 자유 공간 리스트로부터 블록을 얻어 연결리스트에 추가
- 파일이 축소되면 사용하지 않게 되는 블록을 자유 공간 리스트로 반납
- 단편화 발생하지 않고 압축 불필요
- 단편화: 기억장치의 빈 공간 또는 자료가 여러개의 조각으로 나뉘는 현상 → 읽기 쓰기 속도 지연 유발
- 색인 할당
- 색인 블록에 디스크 블록 포인터(섹터 주소)를 모아두어 포인터가 산재되어 비효율적 연결 할당의 단점 해결
- 각 파일은 해당 파일을 구성하는 디스크 섹터들의 주소로 이루어진 자신만의 색인 블록 소유
- 장점
- 탐색이 색인 블록 자체에서 발생하여 빠르다
- 단점
- 블록을 삽입하려 할 때 색인 블록을 완전히 재구성해야함
- 작은 파일의 경우 섹터의 공간이 낭비되어 기억장치가 낭비됨
- 색인 블록인 다룰수 있는 블록의 개수를 초과하는 큰 파일의 경우 처리 불가
- 간접 색인
- 색인 할당의 파일 크기 제한 해결 방안
- 상위 색인 파일이 하위 색인 파일을 인덱싱
- 간접 색인 단계가 증가할 수록 저장 파일 크기가 커짐
- 연결 할당
- FAT(File Access Table)
- 파티션 시작 부분에 위치
- FAT의 각 테이블 항목이 디스크의 각 블록에 하나씩 대응
- 디스크 헤드가 FAT의 정보를 읽어 임의의 블록 위치 파악 가능
- 빈 공간 관리
- 디스크 상의 공간을 할당하고 회수하여 관리하는 작업
- 파일들이 디스크 공간을 할당 받고 남은 공간을 비워둔채 방치하면 단편화 발생
- 단편화된 공간을 주기적으로 압축할 필요 있음
- 빈 공간 관리 방법
- 연결리스트
- 자유공간을 리스트로 유지 및 관리
- free-space list head라는 커널 내 변수를 통해 처음 나오는 빈공간에 대한 포인터 보유, 그후 순차적으로 다음 빈공간에 접근 가능
- 특정 위치의 빈공간을 찾아가기 위해 링크를 많이 따라가야한다는 성능상 한계점 존재
- 그루핑
- 맨 처음 빈 블록에 n개의 블록에 대한 주소 기입
- n-1개는 빈 공간의 블록 주소
- 마지막 1개는 n개의 빈 공간에 대한 주소를 포함하고 있는 블록의 주소를 기입해 연결
- 맨 처음 빈 블록에 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.hostinger.com/tutorials/linux-commands
참고자료
https://www.guru99.com/os-tutorial.html
https://libertegrace.tistory.com/entry/운영체제-운영체제의-발전사배치-처리-시스템-시분할-시스템-멀티-태스킹
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://security-nanglam.tistory.com/454
'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 |