전체 글
-
OS - 다중모드 운용과 타이머CS 2024. 3. 12. 00:47
운영체제와 사용자는 컴퓨터 시스템 내 하드웨어와 소프트웨어 자원을 공유하기 때문에 운영체제 혹은 사용자로부터의 잘못된 명령수행이 일어나지 않도록 보장해야 한다. 따라서 대부분의 컴퓨터 시스템에는 사용자 모드와 커널 모드로 최소한 두 개의 모드로 나누어진다. 이렇게 모드를 나누는 비트를 모드비트 라고 한다. 부팅과정을 예시로 설명하자면 아래와 같다. 처음 부팅시 부트스트랩에 의해 부트로더가 실행되기 위해서 커널모드에서 시작한다. 부트로더가 정상적으로 운영체제를 메모리위에 올려 실행되고 그 이후 사용자모드로 전환된다. 이 사용자가 응용프로그램들을 실행하게 되고, 그러다가 인터럽트 또는 트랩이 발생하게 되면 다시 커널모드로 전환하여 인터럽트를 처리하고 난 후 모드 비트를 바꾸어 사용자모드로 전환한다. 트랩(t..
-
OS - 멀티 프로그래밍과 멀티태스킹CS 2024. 3. 11. 23:51
우리가 컴퓨터의 전원을 키면 젤 먼저 작동하는 것은 부트스트랩과 같은 초기 프로그램이다. 부트스트랩은 컴퓨터 내 하드웨어를 사용가능한 상태로 초기화 하고, 운영체제를 실행시키기 위해 부트로더를 실행시켜 메모리 위에 운영체제를 올린다. 이렇게 운영체제가 메모리위에서 작동하게 되면 비로소 사용자와 시스템에 서비스를 제공할 수 있게 된다. 여기서 몇몇 서비스들은 운영체제가 실행되는 동안에 함께 실행되기 위해 부팅 시 메모리에 load되는데, 이를 시스템 데몬이 이라고 한다. 여기서 데몬이란 백그라운드에서 실행되는 시스템 서비스를 말한다. 데몬은 사용자와의 상호작용을 하지 않는다. 멀티 프로그래밍 운영체제에서 가장 중요한 점은 CPU가 쉬지 않게 효율적으로 프로그램을 관리하는 것이다. 만약 CPU가 하나의 프로..
-
OS - 멀티 프로세서CS 2024. 3. 10. 23:51
컴퓨터 시스템은 사용중인 프로세서의 수에 다라 분류 가능한 다양한 방식이 존재한다. 본 포스팅에서는 Multi-Processor에 대해 공부한다. 읽기 앞서 Process 와 Processor 그리고 CPU 등의 용어 정리를 간단하게 정리한다. CPU : 명령을 처리하는 하드웨어 Processor : 하나 이상의 CPU를 포함하는 물리적인 칩 Process : 메인 메모리위에 load 되어 실행중인 프로그램 인스턴스를 의미 multi-core : 동일한 CPU에 여러개의 컴퓨팅 코어 multi-processor : 여러 프로세서를 포함하는 시스템 즉, CPU는 하나 혹은 그 이상의 코어를 포함하고 있는 하드웨어이고 프로세서는 그러한 CPU를 의미하며 멀티 프로세서는 여러 프로세스 즉, 하나의 시스템이 여..
-
OS - 메인 메모리와 입출력 장치CS 2024. 3. 10. 23:01
저장장치의 구조 - 메인 메모리 CPU는 프로그램을 실행하기 위해선 먼저 해당 프로그램을 “메모리” 위에 올려놔야 한다. 이럴 때 흔히 얘기하는 “메모리”는 메인 메모리(RAM)을 뜻한다. 메모리는 바이트 형태의 배열을 띄고 있으며, 각 바이트는 그 자신의 주소를 갖고 있다. 이러한 메모리에 대한 명시적인 상호 작용은 크게 load 와 store로 나누어져 있다. 먼저 load는 메모리 위의 바이트들을 한 바이트씩 혹은 1 word 씩 CPU내부 레지스터로 옮기는 작업을 의미한다. store는 위의 반대로 레지스터에서 메모리로 옮기는 작업을 의미한다. 이렇게 메모리에 대한 명시적인 상호작용 외에 프로그램 카운터에 저장된 다음 명령에 대한 시작주소를 자동으로 load한다. 여기서 프로그램 카운터란 CPU ..
-
OS - OS가 할일, 컴퓨터 시스템구성CS 2024. 3. 5. 00:38
운영체제가 할 일 전체 컴퓨터 시스템은 크게 4가지로 나뉜다. 하드웨어 운영체제 응용프로그램 사용자 여기서 하드웨어는 주로 CPU, 입출력 장치(모니터, 키보드 등) 계산용 자원을 제공하는 매개체 응용프로그램은 사용자의 문제를 해결하기 위해 위의 자원을 사용한다. 그럼 운영체제는? 운영체제는 다양한 응용프로그램간의 하드웨어 사용을 제어하는 역할을 수행한다. 시스템 관점에서의 운영체제 컴퓨터의 입장에서 운영체제는 가장 하드웨어와 밀접한 관계를 가진 프로그램이다. 이러한 운영체제는 다양한 하드웨어 자원에 대한 관리를 수행한다. 그런데 다양한 응용프로그램들을 사용하게 되면서, 이들 하드웨어 자원에 대한 요청이 아주 많아 질 때가 있다. 운영체제는 자원 관리자로서 효율적으로 어느요청에 어떤 자원을 할당할지를 선..
-
Nginx - 웹 서버와 WASInfra 2024. 2. 21. 15:15
Nginx는 흔히 WEB Server라고 알고 있다. 실제로 아래의 Nginx Docs 사이트에 정의된 바에 의하면 https://nginx.org/en/ nginx nginx nginx [engine x] is an HTTP and reverse proxy server, a mail proxy server, and a generic TCP/UDP proxy server, originally written by Igor Sysoev. For a long time, it has been running on many heavily loaded Russian sites including Yandex, Mail.Ru, VK, nginx.org " 엔진엑스는 HTTP 와 리버스 프록시 서버, 메일 프록시 서버 그..
-
Redis 설치부터 사용까지DB 2024. 2. 19. 21:44
Redis 란? https://redis.io/ Redis Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache, and message broker redis.io 위의 본문에 나온데로, 인 메모리 데이터 저장소로서 캐싱, 벡터 데이터, 문서 데이터, 스트리밍 엔진, 그리고 메시지 브로커로서 사용되는 오픈소스 추가적으로 key-value 쌍의 데이터베이스이다. 여기서 말하는 인 메모리 데이터 저장소란? 데이터 저장에 내부 메모리를 주로 사용하는 목적별 데이터베이스 즉, 우리 컴퓨터를 구성하는 개체 중 메인 메모리(RAM)에 해당된다. 따라서 보통의 데이터베이스는 하드디스크에 접근하여 ..
-
Jenkins 는 뭘까요Infra 2024. 1. 16. 21:55
Jenkins는 널리 알려진 대로 CI / CD 툴이다. 그전에 CI(Continuous Intergration) / CD(Continuous Delivery)에 대해서 뭔지 대충이라도 알아봐야 한다. https://artist-developer.tistory.com/24 요약하자면 다음과 같다. CI : 지속적인 통합으로, 어플리케이션 개발 단계에서 자동으로 빌드하고 테스트하고 병합하는 과정을 뜻한다. CI를 사용하지 않는다고 가정한다면 단순히 GIT을 통해 커밋하고, 각자의 브랜치에서 작업된 상태를 수동으로 테스트하고, 수동으로 병합해야 한다. 이러한 CI의 주요 목적은 수동으로 하는 과정을 자동화 하여 결국 버그를 CI가 없는 환경보다 빨리 찾아서 빠르게 품질을 높이는 방법이 된다. CD: 지속적인..