보글보글 개발일지
반응형
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="신용권"; 위 두 변수는 동일한 객..

[이것이 자바다] Ch4. 조건문과 반복문
코딩기록/자바 2023. 1. 17. 22:38

switch 문은 break꼭 있어야 다음 case실행안함 while은 시작할 때부터 조건식 검사 do while은 우선 블록 내부 실행문 시키고 실행 결과에 따라 반복실행 계속할지 말지 결정 System.in.read()는 하나의 키코드만 읽어서 콘솔에 입력된 문자열 한 번에 읽을 수 없음 Scanner 사용. Scanner scanner = new Scanner(System.in); //Scanner 객체 생성 String inputString = scanner.nextLine(); //nextLine() 메소드 호출

article thumbnail
[이것이 자바다] Ch3. 연산자
코딩기록/자바 2023. 1. 17. 22:03

부호 연산자의 산출 타입은 int형 short result = -s; //컴파일 에러 ++i랑 i=i+1 연산 속도 차이 없다. 컴파일 시 동일한 바이트 코드 생성됨. 정확하게 계산할 때에는 부동소수점 타입 쓰지 않는다. (double, float는 0.1을 정확히 표현 불가) 비교 연산자에서는 연산 수행 전에 타입 변환 -> 피연산자의 타입 일치 시킴 3==3.0 (true) 0.1==0.1f (false) -> 0.1f는 부동 소수점 타입이라 0.1 정확히 표현 불가. 0.100000001~ 이런 값이 되어 0.1보다 큰값이다. String은 참조 타입이라 ==쓰면 원하지 않은 결과 나올 수 있음 string 객체의 문자열만을 비교하고 싶다면 equals() 메소드를 사용 boolean result ..

[이것이 자바다] Ch2. 변수와 타입
코딩기록/자바 2023. 1. 16. 02:44

literal: 소스 코드 내에서 직접 입력된 값 bit 8개 모여 byte int: 4byte (32bit) long: 8byte (64bit) : L(l)을 뒤에 붙여야함 float: 4byte, double: 8byte -> double형이 더 높은 정밀도 가짐 실수 리터럴의 기본 타입: double 타입 변환 자동 타입 변환: 실행 도중에 자동적으로 타입 변환 발생 작은 크기 가지는 타입이 큰 크기 가지는 타입에 저장될 때 발생 byte byteValue = 10; int intValue = byteValue; byte는 1byte, int는 4byte라서 자동 타입 변환! 강제 타입 변환: 큰 걸 작은 그릇에 담을 수 없다. 따라서 쪼개서 한조각만 넣는다. 강제 타입 변환은 캐스팅이라고 하며, ..

반응형