= CUI (Character User Interface)
(1) HCI (Human-Computer Interaction)
- 인간컴퓨터 상호작용
- 인간과 컴퓨터 간의 상호작용(사용자 인터페이스)에 대해 연구하는 학문 분야
(2) UX (User eXepreience)
- 사용자 경험을 의미하며, 사용자가 어떤 서비스를 이용하며 느끼는 종합적 만족을 의미한다.
- EUCI 는 어떻게 하면 사람이 컴퓨터를 편리하게 사용할 수 있을까에 대한 연구이다.
- 얼굴 인식, 음성 인식을 이용하여 컴퓨터에게 명령을 내리는 기술 등이 개발되고 있으며, 별도의 장비가 필요하기 때문에 독립적인 학문으로 존재
(1) 프로세스 스케줄링
- cpu는 하나인데 p1, p2, p3 등 여러 프로세스가 cpu를 사용하려고 한다. 이 때 여러 프로세스 중 순서를 정하는 일을 '프로세스 스케줄링'이라고 한다.
(2) 프로세서 할당
- cpu1, cpu2, cpu3 등 여러 cpu가 있고 프로세스 p1이 있을 때, p1을 어떤 cpu에 할당할지 결정한다. p1이 연산을 가장 많이 해야 하면 연산에 특화된 cpu에 할당
- 즉 여러 cpu 중 어느 cpu에 프로세스를 할당할지를 결정하는 과정
컴퓨터시스템의 주기억장치(메모리) 공간은 커널공간과 유저 스페이스로 이뤄져 있는데, 대부분 유저 스페이스이다.
(1) 멀티 유저, 멀티태스킹 시스템에서의 메모리 관리
- 메모리 공간을 분할하여 어느 공간을 어느 프로세스에게 할당할지 결정한다.
- 메모리를 반납시키는 일을 관리한다.
- 메모리의 빈 공간을 관리하고 파악한다.
- 메모리를 보호한다.(p1의 메모리 공간을 p2가 접근하지 못하게 보호)
(2) 메모리 할당 기법들 (Memory Allocation Schemes)
- Total Contiguous Allocation
- Virtual Memory System(가상 메모리 시스템)
컴퓨터시스템의 파일은 보통 hierarchy 구조이다. 루트에서 시작해서 sub directory로 갈라지는 계층적 트리의 형태를 띠고 있다.
그러나 사람이 보는 이러한 hierarchy 구조(User View)와 달리 Kernel은 블록 시스템(Kernel View)으로 본다. 0번, 1번, 2번으로 이어지는 Block들의 연속으로 본다.
Kernel이 이러한 블록 시스템 내에서 사용자가 원하는 파일을 정확히 읽어서 전달하는 일을 수행해야 한다.
(1) 파일의 생성과 삭제
(2) 디렉토리의 생성과 삭제
(3) 파일/디렉토리의 manipulation(읽기, 쓰기, 찾기) 기능을 지원
(4) 파일이 디스크 블록의 어디에 있는지 맵핑하고 파악하는 일
(5) Storage의 빈 공간을 관리
(6) Storage Space 공간을 할당하는 일
- 파일 시스템 백업 서비스는 운영체제의 기능이 아니다.
(1) 입출력
- CPU에서 실행 중인 프로세스가 갑자기 입출력을 하고 싶어하면, OS에 "시스템 콜"을 요청한다.
- 커널 OS Kernal로 내려와서 루틴들이 실행되면서 원하는 I/O Device Driver로 찾아가서, 해당 디바이스에 입출력 명령을 내린다.
- I/O Device가 입출력을 수행한다.
- 입출력이 끝나면 OS에 "인터럽트"를 걸고, 데이터를 어플리케이션 프로세스에게 전달한다.
- 실행중이던 프로세스는 값을 전달받기 전까지 대기 상태로 있는다.
- 유저 프로그램이 OS 커널공간에 '시스템 콜'을 하면, 디바이스 드라이버에 입출력 요청을 보낸다.
- 그 요청에 따라 읽혀진 데이터는 'Buffer Pool'에 전달되고, 그 중 필요한 데이터만 읽혀서 유저 어플리케이션에 전달된다.
- Buffer Pool 없이 전달할 수도 있지만 대용량 데이터를 전달할 경우 Buffer Pool을 이용하게 되는데, 이후에 또 요청이 들어올 때 만약 Buffer Pool에 있는 데이터면 그것을 사용하여 서비스하므로, i/o 디바이스에 대한 접근 시간을 감소시킬 수 있다.
(1) 프로세스
- 프로세스란, "실행중인 프로그램"(Program in Execution)을 의미한다.
해당 프로그램이 cpu에서 실행되고 있다는 뜻은 아니고, 해당 플그램이 어플리케이션에 submission 되어 있다(명령 내려졌지만, 아직 종료되지 않았다. 메모리 대기 / cpu 실행 / 입출력 상태를 모두 통틀어서 의미함)- 사용자가 요청을 하거나 사용자 프로그램을 실행시켰을 때, 이를 서비스하기위해 만들어진 entity를 '프로세스'라고 한다.
(2) 프로세스 관리의 기능
- 프로세스 생성
- 프로세스 삭제 (프로세스 종료)
- Dispatch(Schedule) : 어떠한 프로세스에게 cpu를 할당해 준다.
- Preemption : cpu를 사용중이던 프로세스에게서 cpu를 빼앗는다.
- Block : 프로세스가 스스로 cpu 사용을 그만두고 다른 사용 요청(i/o 등)
- Suspension/Resumption : 프로세스에게 메모리 반납/메모리를 할당
- Process Synchronization, Inter-process Communication:한 프로그램이 메시지를 보내고 다른 프로그램이 받을때의 동기화, 프로세스 간 통신을 위한 기본 메커니즘으로서 '동기화' 필요
- Deadlock handling : 데드락이라는 현상이 발생할 때 해결
(3) 프로세스 관리의 데이터 구조 PCB
= Process Control Block
- 프로세스 관리를 위해 운영체제 커널이 사용하는 자료구조. 일종의 테이블 같은 구조.
- 프로세스의 ID 번호, 입출력 여부, 우선순위, 현재 CPU 사용여부 등 프로세스에 대한 여러 메타 데이터를 PCB 영역에 저장한다.
- PCB 영역은 프로세스마다 존재하며, 프로세스가 20개면 PCB도 20개가 있다.
- PCB 영역은 메모리의 커널 공간 안에 있다.
[이미지 출처]
https://ko.wikipedia.org/wiki/%EB%AA%85%EB%A0%B9_%EC%A4%84_%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4#/media/%ED%8C%8C%EC%9D%BC:Bash_screenshot.png https://ko.wikipedia.org/wiki/%EA%B7%B8%EB%9E%98%ED%94%BD_%EC%82%AC%EC%9A%A9%EC%9E%90_%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4#/media/%ED%8C%8C%EC%9D%BC:GNOME_3.32.1.png