Development/OS(Operating System)

Computer System Overview2

일단하고봐 2023. 4. 1. 12:55

Operating system structure

Multiprogramming

multipromgramming 은 efficiency 측면에서 필요하다. (자원 활용의 효율성을 높여준다.)

cpu가 불필요한 wait을 하지 않도록 해준다.

job scheduling을 통해 실행한다.

i/o 와 같은 wait 이 발생하면 다른 일을 수행한다. → multitasking을 위해, 모든 프로그램이 조금씩 실행하도록

Timesharing(multitasking)

-cpu의 시간을 나눠서 사용

-모든 프로그램을 메모리에 올릴 수 없으므로 swapping 방식(실행되지 않은 프로그램을 디스크로 보내는 것)을 사용 → 속도가 느려지는 문제 발생

-virtual memory를 사용하여 swapping 방식의 문제를 해결, virtual memory는 현재 필요한 부분만 메모리에 올리는 방식으로 메모리를 관리

Operating System Operation

interrupt는 hardware로 부터 발생한다.

software error , request는 exception이나 trap을 발생 시킨다. → 현재 실행중인 것을 중단하고 error 처리(error의 파급력이 전체적으로 크기 때문), i/o 때문x, interrupt방식과 유사

Dual-mode 동작이 OS를 보호한다.

-user mode 와 kernel mode 사용

-hardware 가 mode bit 제공

-system call은 직접 호출하지 않고 라이브러리 함수를 이용하여 안전하고 편리하게 호출한다. ex)printf()

-operating system code와 application code를 구분해서 전달 (권한이 달라지기 때문) > mode bit 사용

Process Management

Process : 프로그램 실행에 필요한 모든 정보를 담는 자료구조 → 메모리에 전달하는 형식

프로그램 실행 시 필요한 요소 : cpu, memory, i/o, files, initialization data

single-threaded process 는 하나의 program counter(프로그램 실행 위치 저장) 을 갖는다.

multi-threaded process의 경우 하나의 thread당 하나의 program counter를 갖는다.

program management activities

-creating and deleting user and system process

-suspending and resuming process

-providing mechanisms for process syncronization(동기화)

-providing mechanisms for process communication → 프로세스 간 통신

-providing mechanisms for deadlock handling

memory management

processing 전과 후의 모든 메모리 관리

메모리의 어떤 위치에 어떤 것이 있는지 내용들을 관리

어떤 data나 process를 memory에 넣고, 제거할 지 관리

필요할 때 memory 공간을 할당

Storage Management

Application이 Harddisk에 접근하는 방식은 어렵고 복잡 → file 공간에 쓰고 저장해라 그러면 OS가 알아서 하드디스크에 저장할게!

file을 체계적으로 저장하고 관리하기 위해 directories를 사용

Mass-Storage Management

-대량의 데이터를 저장하고 관리 →안전성,보안성,검색성,자원최적화 등을 보장

-free-space management

-storage allocation

-disk scheduling → i/o가 느리기 때문에 요청 순서를 조절하여 harddisk head의 움직임을 최소화

Migragion of integer A from Disk to Resgister

magnetic disk → main memory → cache → hardware register

multitasking 환경은 최신 data(recent value) 라는 것을 보장해줘야한다. → core가 여러개일 때 어려워짐

multiprocessor 환경에서는 cache coherency를 보장하여 모든 cpu에서 cache에 가장 최근의 데이터 값을 갖도록 해야한다.

I/O Subsystem

OS는 사용자가 수많은 종류의 I/O 장치를 구분없이 사용할 수 있도록 해주는 것이 목표이다.

block device, clock device 만 구분해서 전달해줘 > 나머지는 OS가 해줄게

-buffering(임시저장공간)

-caching(빠른 저장 공간에 두는 것)

-spooling (직접 보내지 않고 spool에 두면 os가 읽어가는 방식)

Protection and Security

프로세스는 실행한 사용자의 권한을 승계받아서 작동

Protection - 권한 없는 사용자가 접근 시 보호

모든 사용자에 ID를 부여하고 ID에 권한을 부여하여 관리 (root는 만능 , 모두 가능)

-system은 사용자들을 구분하고 권한을 구분

-user identities

-user id

-group identifier(group id)

-privilege escalation → ex)os가 만든 영역(spool)에 사용자가 접근하는 것이 불가능 하여 print의 경우처럼 권한을 잠시 부여 후 다시 회수하는 것

Operation System Services

System Calls

:os가 제공하는 service 의 programming interface

system call을 이용하여 os가 제공하는 service를 사용 가능하다.

direct system call 보다는 주로 Application Program Interface(API) 통해서 접근

-WIn32 API → 윈도우용

-POSIX API → UNIX계열

-JAVA API → JVM

→ 계열에 따라 같은 API를 사용한다. print()의 경우 C에서 제공하는 것이라 공통적으로 사용 가능

system call 보다 api를 사용하는 이유 : portability(이식성) → 소스 코드를 하나로 통일 가능 , 쉬운 사용

System Call Implementation

일반적으로 시스템 호출 인터페이스와 관련된 번호는 이러한 번호에 따라 색인된 테이블 유지→table을 찾아서 이동

시스템 호출 인터페이스는 OS 커널에서 의도된 시스템 호출을 호출하고 시스템 호출의 상태와 반환 값을 반환

호출자는 시스템 호출이 구현되는 방법에 대해 아무것도 알 필요가 없음

-API를 준수하고 결과적으로 OS가 수행할 작업을 파악해야 함

-API에 의해 프로그래머에게 숨겨져 있는 OS 인터페이스의 대부분 세부 정보

Virtual Machines

-하드웨어와 OS를 묶어서 텅 빈 하드웨어처럼 만들어줌(실제 OS는 존재)

-a는 nonvirtual machine, b는 virtual machine

virtual machine은 각각의 os를 따로 관리할 수 있음(경제성이 높음)

The Java Virtual Machine

-사용자 PC에 가서 해당 PC에 맞도록 컴파일 하자!

-JVM을 각 기기에 설치