프로세스 동기화 컴퓨터 안에서 데이터가 접근되는 패턴 데이터가 저장되어 있는 위치(메모리)에서 데이터를 가져와 연산(cpu)을 하고 다시 저장위치에 가져다 놓는다. 이때 데이터의 동기화 문제가 생긴다. 하나의 저장소에서 여러 사람이 공유 데이터에 접근한다면 데이터가 원하는데로 변경이 안될 가능성이 크고, 데이터의 일관성이 유지가 안될수 있고, 데이터 불일치 문제가 생길수 있다. 동기화 문제 여러사람이 하나의 공유 데이터에 접근할때 문제점.예를들어 두 프로세스에서 동시에 시스템 콜이 발생할때, 커널의 데이터에 동시에 접근되어 변경이 될때 문제가 될 수 있다. 동기화문제-커널에서 동기화 문제가 발생하는 경우 1.커널 수행중 인터럽트 발생시 2.프로세스가 시스템콜을 해서 커널모드로 수행중인데 타이머로인해 컨텍..
멀티레벨 큐 레디큐를 여러개로 분한다. cpu를 기다리는 여러 큐가 존재한다 위로 갈수록 우선순위가 높다. 준비 큐를 여러개로 분할해 관리하는 스케줄링 기법을 말한다. 즉, 프로세스들이 cpu를 기다리기 위해 한줄로 서는 것이 아니라 여러줄로 서는 것을 말한다. 멀티레벨큐는 일반적으로 성격이 다른 프로세스들을 별도로 관리하고 프로세스의 성격에 맞는 스케줄링을 적용하기 위해 별도의 큐를 두게 된다. 여러개의큐 포그라운드 큐: 사용자와 소통 중심 백그라운드 큐: 배치 프로그램 큐 자체에 대한 스케쥴링 - 고정 우선순위 방식 고정적인 우선순위를 부여해 우선 순위가 높은 큐를 먼저 서비스 하고 우선순위가 낮은 큐는 우선순위가 높은 큐가 비었을때 서비스하게 된다.즉, 전위 큐와 후위큐를 사용하는 방식에서는 전위 ..
프로세스 생성 목적 리눅스에서는 두가지 목적으로 프로세스를 생성한다. 목적1. 같은 프로그램의 처리를 여러 개의 프로세스가 나눠서 처리한다. 예를 들어, 웹서버처럼 리퀘스트가 여러개 들어왔을 때 동시에 처리해야 하는 경우. 목적2. 전혀 다른 프로그램을 생성한다. 예) bash로 부터 각종 프로그램을 새로 생성하는 경우. fork() 함수 같은 프로그램의 처리를 여러개의 프로세스가 나눠서 처리한다는 목적1에는 fork 함수만을 사용한다. fork 함수를 실행하면 실행한 프로세스와 함께 새로운 프로세스가 1개 생성된다. -순서 1.자식 프로세스용 메모리 영역을 작성하고, 거기에 부모 프로세스의 메모리를 복사한다. 2.fork()함수의 리턴값이 각기 다른 것을 이용하여 부모 프로세스와 자식 프로세스가 서로 ..
기본적으로 사용자 모드의 프로세스 처리부터, 시스템 콜을 통한 커널 처리를 호출하는 방식. 시스템콜 프로세스는 프로세스의 생성이나 하드웨어의 조작 등 커널의 도움이 필요한 경우 시스템 콜을 통해 커널에 처리 요청을 한다. 예) 프로세스 생성 , 삭제. 메모리 확보, 해제. 프로세스간 통신. 네트워크. 파일시스템 다루기. 파일 다루기. cpu의 모드 변경 시스템콜은 cpu의 특수한 명령을 실행해야만 호출된다. 프로세스는 보통 사용자 모드로 실행되고 있지만 커널에 처리를 요청하고자 시스템 콜을 호출하면 cpu에서는 인터럽트 이벤트가 발생한다. 인터럽트 이벤트가 발생하면 cpu는 사용자 모드에서 커널모드로 변경되며, 요청한 내용을 처리하기 위해 커널은 동작하기 시작한다. 요청한 내용처리가 끝나면 커널 내의 시..
컴퓨터 시스템이 동작할 때 하드웨어에서 반복되는 부분 입력장치 혹은 네트워크 어댑터를 통해서 컴퓨터에 무언가 처리 요청이 들어온다. 메모리에 있는 명령을 읽어 cpu에서 실행하고 그 결과 값을 다시 메모리의 다른 영역에 기록한다. 메모리의 데이터를 하드디스크나 ssd 등의 저장 장치에 기록 또는 네트워크를 통해 다른 컴퓨터에 전송하거나 디스플레이 등의 출력 장치를 통해 사람에게 결과값을 보여준다. 1번부터 반복해서 실행한다. 위와 같은 순서를 반복해서 사용자에게 필요한 하나의 기능으로 정리한 것을 프로그램이라고 한다. -어플리케이션 : 오피스 프로그램, 카톡, 인스타 등등 -미들웨어 : 웹서버, 데이터 베이스 등 -os : 리눅스, ms 등 리눅스의 중요한 역할은 디바이스를 조작하는 일이다. 리눅스 같은..
개요 프로그램의 실행 1.프로그램이 실행될때, CPU와 I/O가 반복 사용된다. CPU를 사용하는 단계를 CPU 버스트, I/O를 사용하는 단계를 I/O 버스트라고 한다. CPU BURST TIME 분포 프로그램 실행시 CPU 바운드 잡, I/O 바운드 잡이 섞여있다. (그래프를 보면 CPU 잡과 I/O 바운드 잡이 섞여 있음) I/O 바운드잡은 사람과의 인터렉티브한 커뮤니케이션을 하기 때문에 CPU잡이 너무 많이 CPU를 갖고 있으면 I/O 바운드가 CPU를 잡지못하므로 사용자가 답답해 할 수 있다. 그래서 CPU 스케쥴이 필요하다. 프로세스의 특성 분류 프로세스는 특성에 따라 두가지로 나눔 I/O 바운드 프로세스: 키보드를 많이 칠때... CPU 바운드 프로세스: 계산을 많이 할때... CPU 스케쥴..