보글보글 개발일지
반응형
article thumbnail
[OS] 프로세스 스케줄링 알고리즘
코딩기록/CS 2023. 3. 13. 20:35

CPU 스케줄링이 필요한 경우 Running→Blocked(예: I/O요청하는 시스템 콜) Running→Ready(예: 할당시간 만료로 timer interrupt) Blocked→Ready(예: I/O완료 후 인터럽트)(선점형일 때) Terminate→Running→Blocked와 Terminate에서의 스케줄링은 nonpreemptive(비 선점형)→나머지 경우는 preemptive(선점형)→ 현대적인 cpu 스케줄링은 대부분 선점형 스케줄링을 사용 Scheduling Criteria (Scheduling Algorithm 의 성능 척도) CPU utillization(이용률)→시스템 입장에서 성능척도(cpu 하나가지고 최대한 일을 많이 시키면 좋음) 전체 시간중 cpu 가 놀지 않고 일한 시간 비..

article thumbnail
[OS] 단기, 중기, 장기 스케줄러
코딩기록/CS 2023. 3. 9. 17:45

스케줄러 한정적 메모리를 여러 프로세스가 효율적으로 사용할 수 있도록 다음 실행 시간에 실행할 수 있는 프로세스 중에 하나를 선택하는 역할 프로세스들은 자신이 종료될 때까지 수많은 큐들을 돌아다닌다. OS는 이 큐 안에 있는 프로세스 중 하나를 선택해야 하며, 이러한 일을 스케줄러(Scheduler)가 담당한다. 프로세스 스케줄링 위한 Queue의 종류 작업 큐(Job Queue) : 현재 시스템 내의 모든 프로세스의 집합 준비 큐(Ready Queue) : 현재 메모리 내에 있으면서 CPU를 할당받고 실행되기 위해 기다리는 프로세스의 집합 장치 큐(Device Queue) : 각각의 장치마다 서비스를 기다리며 줄 서 있는 프로세스의 집합 스케줄러의 목적 - CPU나 자원을 효율적으로 사용하기 위함 - ..

[자바의 정석] 클래스 멤버 변수, 인스턴스 멤버 변수 구분하기
코딩기록/자바 2023. 3. 9. 00:30

클래스 멤버 변수, 인스턴스 멤버 변수 구분하기 인스턴스 변수는 인스턴스가 생성될 때마다 생성되므로 인스턴스마다 각기 다른 값을 유지할 수 있지만, 클래스 변수는 모든 인스턴스가 하나의 저장공간을 공유하므로 항상 공통된 값을 갖는다. 변수의 종류 선언위치 생성시기 클래스 변수 클래스 영역 클래스가 메모리에 올라갈 때 인스턴스 변수 인스턴스 생성되었을 때 지역변수 클래스 영역 이외의 영역 (메서드, 생성자, 초기화 블럭 내부) 변수 선언문이 수행되었을 때 클래스 멤버 변수 : static 키워드 사용. 클래스를 통해 접근 클래스 영역에 클래스 로딩되는 시점에 메모리에 생성 프로그램 종료시 삭제 인스턴스 멤버 변수 : static 키워드 사용 X. 객체를 통해 접근 배열처럼 자동 초기화. 힙 공간에 만들어짐..

article thumbnail
[OS] 프로세스 메모리 구조
코딩기록/CS 2023. 3. 9. 00:22

프로세스 메모리 구조 Code(Text) 영역 : 읽기만 가능 소스코드. 실행할 프로그램의 코드가 저장. 수정 불가능한 기계어로 저장되어 있음 코드영역은 실행 파일을 구성하는 명령어들이 올라가는 메모리 영역으로 함수, 제어문, 상수 등이 여기에 지정 컴파일 타임에 결정되고 중간에 코드를 바꿀 수 없게 Read-Only 로 지정돼있다. Data 영역: 읽고 쓰기 가능 프로그램의 전역 변수와 정적(static) 변수가 저장되는 영역 프로그램이 구동되는 동안 항상 접근 가능한 변수가 저장되는 영역 전역변수, static 값을 참조한 코드는 컴파일 하고 나면 Data 영역의 주소값을 가르키도록 바뀐다. 데이터 영역은 프로그램의 시작과 함께 할당되며, 프로그램이 종료되면 소멸 실행 중도에 전역변수가 변경 될 수도..

article thumbnail
[OS] 프로세스
코딩기록/CS 2023. 3. 8. 23:24

프로세스를 이해하기 위해서는, 프로그램, 프로세스, 스레드를 모두 이해해야 한다. 프로그램 실행파일. 어떤 일을 수행하기 위해 만들어진 명령 모음 (정적) 파일이 저장 장치에 저장되어 있지만 메모리에는 올라가 있지 않은 정적인 상태 프로세스 프로세스 간에는 메인 메모리 공간 분리 생성될 때 각각 별도의 주소공간에 할당되며 코드, 데이터, 힙, 스택 영역을 가지고 있다 멀티 프로세스의 장점으로는, 각 프로세스간 독립적으로 동작하기 때문에 서로 영향을 끼치지 않습니다. 한 프로세스가 다른 프로세스의 자원에 접근하려면 프로세스 간의 통신(IPC, inter-process communication)을 사용해야 한다. (Ex. 파이프, 파일, 소켓 등을 이용한 통신 방법 이용) 프로세스 단점 멀티 프로세싱의 방식..

article thumbnail
[OS] 인터럽트
코딩기록/CS 2023. 3. 8. 22:37

인터럽트란? CPU가 프로그램 실행하고 있을 때, 입출력 하드웨어 등의 장치나 예외사항이 발생하여 처리가 필요할 경우에 마이크로프로세서에게 알려 처리할 수 있도록 하는 것을 말함 예외 발생 → CPU의 정상적인 동작 방해한 상태 인터럽트 방식은 하드웨어 지원을 받아야 하는 제약이 있지만, 폴링에 비해 신속하게 대응하는 것이 가능 실시간 대응이 필요할때 필수적 기능 발생시기를 예측하기 힘든 경우에 컨트롤러가 가장 빠르게 대응할 수 있는 방법 인터럽트 수행 과정 process A를 실행하는 중 디스크에서 어떤 데이터를 읽어오라는 명령을 받았을 경우 process A는 system call 을 통해 인터럽트를 발생시킴 CPU 는 현재 진행 중인 기계어 코드를 완료함 현재까지 수행중이었던 상태를 해당 Proce..

[OS] 시스템 콜
코딩기록/CS 2023. 3. 8. 22:26

커널이란? 커널은 운영체제 중 항상 메모리에 올라가있는 운영체제의 핵심 부분. 파일 입출력, 프로세스 관리 등과 같이 운영체제의 기능을 담당. 하드웨어와 응용프로그램 사이에서 인터페이스 제공하는 역할, 컴퓨터 자원 관리하는 역할. 커널은 사용자가 시스템 콜을 통해 컴퓨터 자원을 사용할 수 있는 자원 관리자. 커널의 유형: 모놀리식, 마이크로 커널 - https://minkwon4.tistory.com/295 커널에 사용자 모드로 접근할 수 없다. 따라서 커널의 기능을 사용하기 위해 운영체제에서 시스템 콜 제공. 시스템 콜이란? 커널이 제공하는 서비스에 대해 응용 프로그램의 요청에 따라 커널에 접근하기 위한 인터페이스 시스템 콜은 커널과 사용자 사이의 인터페이스 역할을 하는 것으로 쉘(Shell)에서 명령..

[OS] 운영체제
코딩기록/CS 2023. 3. 8. 21:50

목차 1. 운영체제의 역할 2. 운영체제의 구조 1. 운영체제의 역할 CPU 스케줄링과 프로세스 관리: CPU 소유권을 어떤 프로세스에 할당할지, 프로세스의 생성과 삭제, 자원 할당 및 반환 관리 메모리 관리: 한정된 메모리를 어떤 프로세스에 얼마큼 할당해야 하는지 관리 디스크 파일 관리: 디스크 파일을 어떠한 방법으로 보관할지 관리 I/O 디바이스 관리: I/O 디바이스들인 마우스, 키보드와 컴퓨터 간에 데이터를 주고받는 것을 관리 2. 운영체제의 구조 맨 위: 유저 프로그램 중간: 운영체제 (GUI, 시스템콜, 커널, 드라이버) 맨 아래: 하드웨어

article thumbnail
[이것이 자바다] Ch6. 클래스
코딩기록/자바 2023. 3. 7. 21:04

객체란? 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신의 속성을 가지고 있고 다른 것과 식별 가능한 것. 속성과 동작으로 구성. 사람은 이름, 나이 등의 속성 + 웃다, 걷다 등의 동작 속성: 필드, 동작: 메소드 객체 모델링: 현실 세계의 객체를 소프트웨어 객체로 설계하는 것 객체의 상호작용: 객체들은 각각 독립적으로 존재, 다른 객체와 서로 상호작용하며 동작 메소드: 객체들 사이의 상호작용 수단 메소드 호출: 객체가 다른 객체의 기능을 이용 도트 연산자: 객체의 필드와 메소드에 접근할 때 필요 객체 지향 프로그래밍: 만들고자하는 완성품인 객체를 모델링, 집합 관계에 있는 부품 객체와 사용관계에 있는 객체를 하나씩 설계한 후 조립 객체 지향 프로그래밍의 특징 캡슐화(Encapsulat..

[이것이 자바다] Ch5. 참조타입
코딩기록/자바 2023. 1. 20. 00:52

참조 타입 : 객체의 번지를 참조 (배열, 열거, 클래스, 인터페이스) 참조타입은 값으로 메모리의 번지를 가짐. 번지를 통해 객체 참조 변수 스택에 생성, 객체는 힙에 생성 메모리 사용 영역 메소드 영역 : 클래스를 클래스 로더로 읽어 클래스 별로 분류 -> JVM시작될 때 생성, 모든 스레드 공유 힙 영역: 객체와 배열 생성. JVM 스택 영역의 변수나 다른 객체의 필드에서 참조 JVM 스택 영역: 각 스레드마다 하나씩 존재, 스레드 시작될 때 할당. 메소드 호출할 때마다 프레임 추가, 메소드 종료되면 해당 프레임 제거. 프레임 내부에 로컬 변수 스택 존재. 문자열 리터럴이 동일하면 string 객체 공유. String name1="신용권"; String name2="신용권"; 위 두 변수는 동일한 객..

반응형