본문 바로가기

분류 전체보기

(297)
인터럽트 인터럽트(Interrupt) 하드웨어 장치가 CPU에게 어떤 사실을 알려주거나 CPU의 서비스를 요청해야 할 경우, CPU 내에 있는 인터럽트 라인을 세팅하여 인터럽트를 발생시킨다. (프로그램이 명령을 수행하기 위해서는 CPU를 할당받아야 함) CPU는 매번 프로그램 카운터가 가리고 있는 곳의 명령을 수행한 뒤, 다음 명령을 수행하기 직전에 인터럽트 라인이 세팅되었는지 체크한다. 이를 통해 인터럽트가 발생했으면 CPU는 현재 수행 중이던 프로세스를 멈추고 운영 체제의 인터럽트 처리 루틴으로 이동하여 인터럽트 처리를 수행한다. 하드웨어 인터럽트가 발생하는 예 1.기계 착오 인터럽트(Machine check interrupt) - 프로그램을 실행하는 도중 갑작스런 정전이나 컴퓨터 자체 내에서 기계적인 문제가..
프로세스 주소 공간 프로세스의 주소 공간 프로그램이 CPU에 의해 실행이 되면 프로세스가 생성이 되고 프로세스 주소 공간이 할당 된다. 프로세스 주소 공간에는 코드, 데이터, 스택으로 이루어져 있다 코드 segment : 프로그램 소스 코드를 저장한다. (읽기만 가능) 데이터 segment : 전역 변수를 저장한다. (읽고 쓰기가 가능하다) 스택 segment : 함수, 지역 변수가 저장되어 있다. (읽고 쓰기가 가능하다) 코드 segment : - 코드 영역은 실행 파일을 구성하는 명령어들이 올라가는 메모리 영역으로 함수, 제어문, 상수 등 함수에 대한 기계어 코드가 여기에 저장된다. - 컴파일 타임에 결정되고 중간에 코드를 바꿀 수 없어 Read-Only Data segment: - 초기값이 있는 전역변수 , 배열, 정..
프로세스와 스레드 1. 프로세스(Process) - 프로세스는 실행 중인 프로그램으로 디스크로부터 메모리에 적재되어 CPU 의 할당을 받을 수 있는 것을 말한다. - 운영체제로부터 주소 공간, 파일, 메모리 등(시스템 자원)을 할당받으며 이것들을 총칭하여 프로세스라고 한다. 할당받는 시스템 자원 CPU 시간 운영되기 위한 주소 공간 Code, Data, Stack, Heap의 구조로 되어있는 독립된 메모리 영역. 기본적으로 프로세스마다 최소 1개의 스레드를 갖는다.(메인 스레드) 프로세스는 각각 별도의 주소공간 할당 (독립적) -Code : 코드 자체를 구성하는 메모리 영역(프로그램 명령) -Data : 전역변수, 정적변수, 배열 등 초기화 된 데이터는 data 영역에 저장 초기화 되지 않은 데이터는 bss 영역에 저장 ..
CPU 스케줄러 CPU 스케줄러란? CPU가 하나의 프로세스 작업이 끝나면 다음 프로세스 작업을 수행해야 한다. 이떄 어떤 프로세스를 다음에 처리할 지 선택하는 알고리즘을 CPU Scheduling 알고리즘이라고 한다. 따라서 상황에 맞게 CPU를 어떤 프로세스에 배정하여 효율적으로 처리하는가가 중요하다. 스케줄링이 일어날때의 상태변화 1. Running -> Waiting : (ex. I/O 요청, 자식프로세스 종료 - wait() 요청을 통해 종료) 2. Running -> Terminate : (ex. 부모프로세스의 종료) 3. Running -> Ready : (ex. 인터럽트 발생) 4. Waiting -> Ready : (ex. I/O 완료) 비선점 vs 선점 스케줄링 비선점 스케줄링 - time-slice가..
스케줄러(단기,중기,장기) 프로세스 상태와 장기,중기,단기 스케줄러 그림 프로세스를 스케줄링하기 위한 Queue가 3개 있음 Job Queue: 현재 시스템 내에 있는 모든 프로세스의 집합 Ready Queue: 현재 메모리 내에 있으면서 CPU 를 잡아서 실행되기를 기다리는 프로세스의 집합 Device Queue: Device I/O 작업을 대기하고 있는 프로세스의 집합 장기스케줄러(Long-term scheduler or job scheduler) 메모리는 한정되어 있는데 많은 프로세스들이 한꺼번에 메모리에 올라올 경우, 대용량 메모리(일반적으로 디스크)에 임시로 저장된다. 이 pool(디스크) 에 저장되어 있는 프로세스 중 어떤 프로세스에 메모리를 할당하여 ready queue 로 보낼지 결정하는 역할을 한다. 메모리와 디스..
운영체제란 운영체제란? 운영체제는 컴퓨터 시스템의 자원들을 효율적으로 관리하여, 사용자가 컴퓨터를 편리하고, 효과적으로 사용할 수 있도록 환경을 제공하는 여러 프로그램의 모양입니다. 운영체제는 컴퓨터 사용자와 컴퓨터 하드웨어 간의 인터페이스로서 동작하는 시스템 소프트웨어의 일종으로, 다른 응용프로그램이 유용한 작업을 할 수 있도록 환경을 제공해 줍니다. 운영체제 = 인터페이스 환경제공 + 자원 관리 운영체제의 필요성 운영체제도 하나의 SW이고 처음부터 모든 기계가 운영체제가 있었던 것은 아니다. 하지만 점점 컴퓨터의 구성이 많아지고 처리할 것들이 복잡해 지면서 복잡한 작업 환경에 규칙이 없으면 기계를 망가뜨릴 수 있기 때문에 등장한 것이 운영체제이다. 운영체제의 역할 (크게 4가지로 나눌수 있다) 자원관리 - 운영..
1/4 Spring Boot 환경 설정 - Spring Starter Project 를 만들때 Spring Web dependency 추가하는 것을 까먹었더니 에러가 났다 - JSP 쓸때 jstl과 tomcat-embed-jasper depencency 추가를 안했더니 에러가 났다. - 프로젝트>>properties 의 server를 tomcat server 9.0 으로 설정해주어야 한다.
도커에 대해서 Paas - 소스만 있으면 바로 배포할 수 있다는 장점이 있다. - application을 paas 방식에 맞게 작성해야 한다ㅏ - 서버에 대한 원격 접속 시스템을 제공하지 않는다 - 서버에 파일시스템 사용할 수 없다 - Site 패키지 설정 불가능 Paas 에서 지원을 하면 사용할 수 있고 지원하지 않으면 사용이 불가능 한 것 - 크론잡(문자 발송, 예약, 정산 등) - 데이터 분석 - 로그분석 - 애플리케이션 성능 모니터링 - a/b테스트, canary 배포 - 네트워크, 스토리지 설정 도커의 등장 - 어떠한 프로그램도 컨테이너로 만들 수 있다 ex) sql을 사용하고 싶다 -> sql 컨테이너를 띄운다, Redis를 사용하고 싶다 -> redis 컨테이너를 띄운다. , Jenkins를 사용하고 싶다..