##본 포스팅은 운영체제 강의 '이화여자대학교 운영체제 강의 - 반효경 교수님'를 보고 정리한 내용입니다. 프로세스란 > 프로세스 실행 중인 프로그램 (program in execution) > 프로세스의 문맥 프로세스의 출생부터 사망까지를 봤을 때, 현재 시점에서 프로세스가 어떤 상태에 있느냐가 "프로세스의 문맥"이다. CPU를 얼마나 썼는가, 메모리를 얼마나 가지고 있었는가 등을 의미한다. CPU에서 어디까지 실행했는가(하드웨어 문맥) Program Counter, 각종 register 프로세스의 주소 공간 code, data, stack 프로세스 관련 커널 자료 구조 PCB(Process Control Block), Kernel stack > 프로세스의 상태 기본적으로 아래 세 상태로 분류할 수 있..
##본 포스팅은 운영체제 강의 '이화여자대학교 운영체제 강의 - 반효경 교수님'를 보고 정리한 내용입니다. 컴퓨터 시스템 구조 (1강에서 정리했던 내용을 제외한 나머지를 요약해보자면) > mode bit CPU를 운영체제가 실행하는 것인지, 사용자 프로그램이 실행하는 것인지 구분하게 두는 비트 1: 사용자 모드 > user mode (제한된 기계어) 0: 모니터 모드(OS 코드 수행) > kernel mode (특권 명령 가능) 사용자 프로그램의 잘못된 수행으로 다른 프로그램 및 운영체제에 피해가 가지 않도록 하기 위한 보호 장치의 역할 위험한 명령(특권 명령)의 경우 커널 모드에서만 수행 가능하도록 하며, 특권 명령이 감지되면 자동으로 커널 모드로 바뀌게 된다. '바뀌는 것'은 Interruption,..
##본 포스팅은 운영체제 강의 '이화여자대학교 운영체제 강의 - 반효경 교수님'를 보고 정리한 내용입니다. 운영체제의 분류 > 동시작업 가능여부 1) 단일 작업 : 한 번에 하나의 작업만 처리 2) 다중 작업 : 동시에 두 개 이상의 작업 처리(OS에서 적절한 자원분배가 필요한 이유) > 사용자의 수 1) 단일 사용자(개인 PC의 Windows) 2) 다중 사용자(UNIX, Linux) 위 두 분류가 크게 다른 점은 없지만, 사용자가 여러명이 되면 보안상의 문제가 중요시 될 수 있다. > 처리 방식 1) 일괄 처리 (batch processing) 초기 Punch Card 처리 시스템 방식 작업 요청의 일정량 모아서 한꺼번에 처리(내가 편한대로 하겠다) 작업이 완전히 종료될 때까지 기다려야 함 2) 시분..
##본 포스팅은 운영체제 강의 '이화여자대학교 운영체제 강의 - 반효경 교수님'를 보고 정리한 내용입니다. CPU 스케줄링 여러 프로그램들이 CPU을 사용하겠다고 줄을 서 있는 상황이다. 일반적 실생활에서 생각해보면 먼저 온 사람에게 먼저 처리해주는 것이 당연하지만, 그렇게 처리를 하면 P1의 시간을 계속 기다려야하니 너무 오래걸린다. SJF(Shortest-Job-First)이 그 대안이다. 단순히 말해 CPU 사용시간이 가장 짧은 프로세스를 제일 먼저 스케줄해주는 것이다. 하지만 이 또한 "Starvation(기아현상)"이라는 단점이 있다. 형평성에 문제가 있다는 것이다. 즉, CPU를 길게 쓰려는 프로세스가 계속해서 기다려야만 하는 상황이 올 수가 있다. 프로그램이 계속 io를 마치고 바로 와서 줄..
##본 포스팅은 운영체제 강의 '이화여자대학교 운영체제 강의 - 반효경 교수님'를 보고 정리한 내용입니다. 운영체제란 컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소포트웨어 계층 하드웨어를 직접적으로 건들이지 않더라도, 사용자가 소프트웨어를 통해 쉽게 컨트롤 할 수 있도록 중간자 역할을 해준다. > 목적 하드웨어를 몰라도 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공 - 프로그램 당 한 컴퓨터를 독자적으로 사용하는 환상을 제공 - 하드웨어를 직접 다루는 복잡한 부분을 운영체제가 대행 자원을 효율적으로 관리 - CPU, Memory, I/O 장치 등을 효율적으로 관리 (여러 프로그램들이 한정된 자원을 잘 나눠 쓸 수 있도록 번갈아 줌) - 실행 중인 프로..
가상메모리? 링크 : (나중에 첨부하기) 말이 길어질 것 같으니 따로 글을 써서 링크를 첨부해두겠다. Memory mapping 파일을 처리하기 위해서는 보통 저수준으로는 파일 디스크립터를 이용하며, 고수준으로 접근하기 위해서는 파일 구조체 포인터를 이용하여 접근하게 된다. 하지만 이런 방식을 이용하면 버퍼를 거쳐서 입출력을 하게 된다. 하지만, mmap()을 이용하여 '메모리 맵 방식'으로 파일을 연결하게 되면 버퍼를 이용하지 않고, Page를 이용하여 데이터 처리가 가능해진다. 상대적으로 크기가 작은 버퍼에 비해 보통 4KB의 크기를 가지는 페이지를 이용하면 처리가능한 크기와 처리 속도가 향상된다. 그렇기 때문에 데이터 크기가 크거나 빠른 처리를 해야하는 경우 메모리 맵 방식을 사용한다. 특징 1. ..