접근 통제 정책어떤 주체가 언제, 어디서, 어떤 객체에 대하여, 어떠한 행위를 하도록 허용 또는 거부할 것인지를 정의하는 것주체와 객체 사이의 정보의 흐름을 제한하는 것으로 특정 권한을 가진 자만 접근할 수 있도록 하여 객체의 기밀성, 무결성, 가용성을 보장하는 것 임의적 접근 제어(DAC)Discretionary Access Control. 자원의 소유자가 자원의 접근 권한을 결정하는 접근 통제 방식하나의 주체마다 객체에 대한 접근 권한을 부여하는 방식접근 권한을 객체의 소유자가 임의로 지정하는 자율적 정책 ➡️ 유연하다하지만 그만큼 보안 관리가 어렵고, 잘못된 권한 부여로 인해 보안 취약점이 발생할 수 있다.대부분의 파일 시스템은 DAC를 사용한다.파일이나 디렉터리의 소유자는 그 자원에 읽기, 쓰기,..
파일 시스템이란?`파일`: 데이터, 프로그램 등을 담는 그릇`파일 시스템`: 그 그릇들을 관리하는 시스템파일에 이름을 붙이고, 저장/탐색을 위해 파일을 어디에 위치시킬 것인지 나타내는 체계파일들이 디스크 상에서 구성되는 방식파일 시스템은 파일들을 관리할 정보가 필요하다. ➡️ `메타데이터`파일의 이름, 확장자, 권한 정보 등 리눅스의 파일 시스템EXT(EXtended File System)리누스는 minix 플랫폼의 불편함을 해결하기 위해 새로운 운영체제인 `리눅스`를 만들었다.Minux 플랫폼 위에서 개발했기 때문에 Minux 파일 시스템을 사용했는데, Minux 파일 시스템을 확장하여 `extfs(Extended File System)`이라는 파일 시스템을 만들었다.성능 향상, 확장성, 기능을 추가하..
스와핑(Swapping)메모리에서 사용되지 않는 프로세스를 보조기억장치로 옮겨서 생긴 메모리 상의 빈 공간에 또 다른 프로세스를 적재하여 실행하는 방식메인 메모리 공간이 부족할 때 사용한다.`스왑 공간`: 메인 메모리에서 쫓겨난 프로세스들이 저장되는 보조 메모리 영역보조 메모리에 스와핑된 프로세스의 임시 대기열을 형성한다.`스왑 아웃(swap-out)`: 현재 실행되지 않는 프로세스가 메모리에서 스왑 영역으로 옮겨지는 것`스왑 인(swap-in)`: 스왑 영역에 있던 프로세스를 다시 메모리로 옮겨오는 것특징프로세스들이 요구하는 메모리 주소 공간의 크기가 실제 메모리보다 큰 경우에도 프로세스를 동시에 실행할 수 있다.시스템의 유연성을 높이고 가용 메모리를 효율적으로 사용할 수 있게 해준다.프로세스를 스왑시..
임계 구역(Critical Section)공유 자원의 일관성을 보장하기 위해 하나의 프로세스/스레드만 진입해서 실행 가능한 영역`공유 자원`: 여러 프로세스 혹은 스레드가 공유하는 자원ex. 전역 변수, 파일, I/O 장치, 보조기억장치 등임계 구역에 진입하고자 하면, 진입한 프로세스 이외의 다른 프로세스는 대기해야 한다.임계 구역에 동시에 접근하면 자원의 일관성이 깨질 수 있다. 임계 구역 문제임계 구역으로 지정되어야 할 코드 영역이 임계 구역으로 지정되지 않았을 때 발생하는 문제경쟁 상태(Race Condition)여러 프로세스가 공유 자원에 동시에 접근할 때, 접근의 타이밍이나 순서 등이 결괏값에 영향을 줄 수 있는 `경쟁 상태(race condition)`가 발생할 수 있다. 임계 구역 문제 해결..
스레드 풀이란?스레드 + 풀`스레드(Thread)`: 프로세스에서 실행되는 흐름의 단위`풀(Pool)`: 필요할 때마다 객체를 할당하고 해제하는 대신, 사용 가능한 초기화된 객체의 집합`스레드 풀(Thread Pool)`: 미리 일정 개수의 스레드를 생성해 두고 작업이 발생하면 사용 가능한 스레드를 할당하여 작업을 처리하는 방식으로, 처리가 완료되면 스레드는 제거되지 않고 다시 스레드 풀로 돌아가 스레드의 반복적인 생성과 소멸을 피하고 시스템 자원을 효율적으로 활용할 수 있다. 스레드 풀의 필요성데이터베이스, 웹 서버 등의 서버 프로그램은 여러 클라이언트의 요청을 반복적으로 실행한다. 이를 처리하기 위해 다음과 같이 서버에 들어오는 요청마다 스레드를 새로 만들어서 처리하고 처리가 끝난 스레드를 버리는 식..
인터럽트(Interrupt)란? CPU가 어떤 일을 수행하던 중, 예상치 못한 외부에서 발생한 이벤트로 인해 프로세스를 잠시 중단시키는 것 인터럽트가 발생하면 현재 실행 중인 프로세스나 프로그램이 멈추고, `해당 인터럽트를 처리하는 루틴(인터럽트 핸들러 루틴)`이 실행된다. 인터럽트는 키보드, 마우스 등 I/O 디바이스로 인한 인터럽트, 0으로 숫자를 나누는 산술 연산에서의 인터럽트, 프로세스 오류 등으로 발생한다. 인터럽트의 종류 동기 인터럽트(예외) CPU에 의해 발생하는 인터럽트로, CPU가 예기치 못한 상황을 접했을 때 발생한다. 비동기 인터럽트(하드웨어 인터럽트) 주로 입출력 장치에 의해 발생하는 인터럽트로, 입출력 작업 도중에도 효율적으로 명령을 처리하기 위해 사용한다. 알림과 같은 인터럽트 ..