전체 글69 [운영체제] 가상 메모리 관리 (요구 페이징, 페이지 교체 알고리즘) 요구 페이징 기법 : 사용자가 요구할 때 해당 페이지를 메모리로 가져오는 것 -> 페이지를 미리 가져 오는 방식은 가져온 페이지를 쓰지 않을 경우, 메모리를 낭비하게 된다. 따라서 요구 페이징을 사용하면 메모리의 절약, 메모리의 효율적 관리, 프로세스의 응답 속도 향상 등의 효과를 볼 수 있다. 요구 페이징과 스왑 영역 - 페이지가 스왑 영역에 있는 경우 (1) 요구 페이징으로 인해 처음부터 물리 메모리에 올라가지 못한 경우 (2) 메모리가 꽉 차서 스왑 영역으로 옮겨 온 경우 페이지 테이블 엔트리(PTE)의 구성 1) 페이지 번호 2) 프레임 번호 3) 플래그 비트 - 접근 비트(access bit): 페이지가 메모리로 올라온 후 사용한 적이 있는지 알려주는 비트 - 변경 비트(modified bit).. 운영체제 2022. 6. 14. [운영체제] 가상메모리 세그먼테이션-페이징 혼용 기법 메모리 접근 권한 : 메모리의 특정 번지에 저장된 데이터를 사용할 수 있는 권한 : 읽기(read), 쓰기(write), 실행(execute), 추가(append) 권한이 있다 프로세스의 영역별 메모리 접근 권한 코드 영역: 자기 자신을 수정하는 프로그램은 없기 때문에 읽기 및 실행 권한을 가진다. 데이터 영역: 데이터는 크게 읽거나 쓸 수 있는 데이터와 읽기만 가능한 데이터로 나눌 수 있다. (일반적인 변수는 읽거나 쓸 수 있으므로 읽기 및 쓰기 권한을 가지고, 상수로 선언한 변수는 읽기 권한만을 가진다) 페이징 기법에서 메모리 접근 권한까지 고려한 페이지 테이블 - 페이지마다 접근 권한이 다르기 때문에 페이지 테이블의 모든 행에는 메모리 접근 권한과 관련된 권한 비트가 추가된다. - 메모리 관리자는 .. 카테고리 없음 2022. 6. 11. [운영체제] 가상메모리 세그먼테이션 기법 세그먼테이션 기법 : 가상 메모리를 프로세스의 크기에 따라 세그먼트로 분할하여 메모리를 관리하는 기법 장점: 하나의 세그먼트 단위로 통제가 가능하다 단점: 외부 단편화가 발생한다 세그먼테이션 테이블 segmentation table : 물리 메모리를 프로세스의 크기에 따라 가변적으로 나누어 사용한다. - 세그먼트의 크기를 나타내는 limit과 물리 메모리상의 시작 주소를 나타내는 address가 있다. - 각 세그먼트가 자신에게 주어진 메모리 영역을 넘어가면 안되기 때문에 세그먼트의 크기 정보에는 크기를 뜻하는 size 대신에 제한을 뜻하는 limit을 사용한다. - 세그먼테이션 기법에서도 페이징 기법과 동일하게 물리 메모리가 부족할 때는 스왑 영역을 사용한다. (테이블에 I (invalid)라고 표시되.. 운영체제 2022. 6. 11. [운영체제] 가상 메모리, 페이징 기법 가상 메모리 : 물리 메모리의 크기와 상관없이 프로세스에 커다란 메모리 공간을 제공하는 기술 : 가상 메모리를 이용하면 프로세스는 운영체제가 어디에 있는지, 물리 메모리의 크기가 어느 정도인지 신경 쓰지 않고 메모리를 마음대로 사용할 수 있다. : 메모리 오버레이를 운영체제 내부에서는 가상 메모리의 개념으로 관리를 한다. 가상 메모리의 구성 1. 프로세스가 바라보는 메모리 영역 2. 메모리 관리자가 바라보는 메모리 영역 - 가상 메모리에서 메모리 관리자는 물리 메모리의 부족한 부분을 스왑 영역으로 보충한다. - 프로세스의 입자에서는 물리 메모리를 신경쓰지 않고 자신이 필요한 만큼 그냥 가상 주소 공간을 사용한다. (이 가상 주소 공간을 따져보면 실제로는 물리 메모리 + 스왑 영역으로 이루어져 있다는 것!.. 운영체제 2022. 6. 9. [운영체제] 물리 메모리 관리 메모리 주소 : 1Byte로 나뉜 메모리의 각 영역은 메모리 주소로 구분하는데 보통 0번지부터 시작한다. (대부분 OS가 0번지부터 들어간다) : CPU는 메모리에 있는 내용을 가져오거나 작업 결과를 메모리에 저장하기 위해 CPU 안에 있는 메모리 주소 레지스터(MAR)를 사용한다. 메모리 관리의 복잡성 : 메모리는 폰노이만 구조의 컴퓨터에서 유일한 작업 공간이며 모든 프로그램은 메모리에 올라와야 실행이 가능한데, 시분할 시스템에서는 운영체제를 포함한 모든 응용 프로그램이 메모리에 올라와 실행되기 때문에 메모리 관리가 복잡하다. (일괄 처리 시스템은 한번에 하나의 프로그램만 실행시키기 때문에 메모리 관리가 단순하다) 메모리 관리의 이중성 프로세스 입장: 메모리를 독차지하고 싶어 한다. 메모리 관리자 입장.. 운영체제 2022. 6. 6. [운영체제] 교착상태 교착상태란? : 2개 이상의 프로세스가 다른 프로세스의 작업이 끝나기만을 기다리며 작업을 더 이상 진행하지 못하는 상태 교착상태 vs 아사현상 교착상태의 정의를 처음 보면 CPU 스케줄링 정책에서 등장한 아사현상과 헷갈릴 수 있는데 두가지는 차이를 가지고 있다. 아사현상: 운영체제가 잘못된 CPU 스케줄링 정책을 사용하여 특정 프로세스의 작업이 지연되는 현상 (스케줄링 정책에 따라 다르지만 크게 이야기하면 남아있는 작업 시간이 길거나 애초에 작업 시간이 긴 프로세스들의 작업이 계속 지연되는 현상이다) 교착상태: 여러 프로세스가 작업을 진행하다 보니 자연적으로 발생하는 문제 (운영체제의 잘못이 아님..) 교착 상태가 발생하는 경우 1. 시스템 자원 : 다른 프로세스와 공유할 수 없는 시스템 자원을 사용할 .. 운영체제 2022. 6. 5. [운영체제] 운영체제의 구조 (커널, 인터페이스..) 운영체제의 구조 1. 커널 : 프로세스 관리, 메모리 관리, 저장장치 관리와 같은 운영체제의 핵심적인 기능을 모아놓은 것 (1) 프로세스 관리: 프로세스에 CPU를 배분하고 작업에 필요한 제반 환경을 제공 (2) 메모리 관리: 프로세스에 작업 공간을 배치하고 실제 메모리보다 큰 가상공간(가상메모리)을 제공 (3) 파일 시스템 관리: 데이터를 저장하고 접근할 수 있는 인터페이스 제공 (4) 입출력 관리: 필요한 입출력 서비스 제공 (5) 프로세스 간 통신 관리: 공동 작업을 위한 각 프로세스 간 통신 환경을 지원 2. 인터페이스 : 커널에 사용자의 명령을 전달하고, 실행 결과를 사용자에게 알려주는 역할 시스템 호출 : 커널이 자신을 보호하기 위해 만든 인터페이스 (커널이 제공하는 시스템 자원의 사용과 연관.. 운영체제 2022. 6. 5. [운영체제] 운영체제의 정의, 역할, 목표 운영체제 (OS, Operating System) : 일반 컴퓨터, 노트북, 스마트 폰의 전원을 켜면 가장 먼저 만나게 되는 소프트웨어 : 응용 프로그램이나 사용자에게 컴퓨터 자원을 사용할 수 있는 인터페이스를 제공하고 그 결과를 돌려주는 시스템 소프트웨어 -> 응용 프로그램이나 사용자에게 모든 컴퓨터 자원을 숨기고 정해진 방법(인터페이스)으로만 컴퓨터 자원을 사용할 수 있도록 제한한다. -> 자원 보호와 효율적 관리를 위해 사용 운영체제의 예 pc 운영체제: 윈도우, mac os, 유닉스, 리눅스 등 모바일 운영체제: ios, 안드로이드 등 운영체제의 역할 1. 자원 관리 : 컴퓨터 시스템의 자원을 응용 프로그램에게 나누어주어 사용자가 원활하게 작업할 수 있도록 한다. : 자원을 요청한 프로그램이 여러.. 운영체제 2022. 6. 4. [docker 기초] docker 이미지 알아보기 Docker 공식 리포지토리인 Docker Hub에서 이미지를 취득하는 방법에 대해 알아보자. 0. Docker Hub Docker Hub는 GitHub이나 Bitbucket 같은 소스코드 관리 툴과 연계하여 코드를 빌드하는 기능이나 실행 가능한 애플리케이션의 이미지를 관리하는 기능을 갖춘 Docker의 공식 리포지토리 서비스이다. Docker Hub를 이용하면 물리 서버, 가상 머신, 클라우드 등 다양한 환경에서 Docker 이미지를 쉽게 배포할 수 있다. Docker Hub에는 다양한 공식 이미지 뿐만 아니라 사용자가 독자적으로 생성한 이미지를 공개할 수도 있다. https://hub.docker.com/ Docker Hub Container Image Library | App Containeriza.. Etc/Container 2022. 5. 3. [docker 기초] Nginx 웹 서버 작동시키기 오픈 소스 웹서버인 Nginx 환경을 구축해 docker로 실행시켜보자. Nginx는 대량의 요청을 처리하는 대규모 사이트에서 주로 이용하고 있으며, 리버스 프록시나 로드밸런서와 같은 기능도 가지고 있다. 1. Docker 이미지 다운로드하기 Docker 컨테이너를 시작하기 위해서는 Docker 컨테이너의 바탕이 되는 'Docker 이미지'가 필요하다. Docker의 공식 리포지토리인 Docker Hub에 Nginx의 공식 이미지가 제공되어 있다. 이 공식 이미지에는 Docker에서 Nginx를 작동시키기 위해 필요한 것이 패키징되어 있으므로 아래 명령을 통해 클라이언트 PC로 다운이 가능하다. docker pull nginx 2. 다운받은 이미지 확인 docker image docker image ls.. Etc/Container 2022. 5. 2. spotify web api 사용 방법 (Java, Spring boot) 음악과 함께 하루를 기록할 수 있는 간단한 다이어리를 기획하고 spotify web api를 사용해 음악 검색 기능을 구현했습니다. API 사용 방법은 아래 공식 사이트에서 자세한 사항을 확인할 수 있습니다. https://developer.spotify.com/ Home | Spotify for Developers Music, meet code. Powerful APIs, SDKs and widgets for simple and advanced applications. developer.spotify.com 1. App 생성 스포티파이 개발자 사이트에 접속해서 로그인을 하고, 사용할 App을 새로 생성해 줍니다. 2. Client ID와 Client Secret 확인 생성한 App에서 Client ID.. Spring 2022. 2. 8. 초기에 필요한 데이터가 있을 때 (seeding) 초기에 필요한 데이터가 있다면 어떻게 해야할까? 시딩(seeding)을 사용하면 테스트에 필요한 데이터를 준비하거나 초기 데이터를 입력해야 하는 경우에 유용하다. 시딩(seeding)이란 무엇일까? 시딩은 사용할 데이터를 데이터베이스에 추가하는 것을 말한다. Django에서 시딩은 하나의 파일에 데이터를 두고 loaddate 명령어를 써서 사용할 수 있다. *django_seed 모듈을 사용하여 필드에 맞는 데이터를 자동으로 생성하는 것도 가능하다. python manage.py loaddate 이때 시딩을 위해 데이터가 들어있는 파일이 필요하다. (우선적으로 만들어져 있어야 함) 데이터가 들어있는 seed_file은 JSON, XML 등의 파일 형식을 사용할 수 있다. *JSON: 데이터를 표현하기 위.. Django 2022. 1. 13. 이전 1 2 3 4 5 6 다음