전체 글 96

Scheduling: FIFO, SJF, STCF, Round Robin, incorporation IO

Scheduling Metrics context switching이 일어날 때, 새로운 프로세스는 어떻게 결정되는가? 바로 스케줄링 정책(scheduling policies)에 의해서이다. 그리고 이 정책이 어떤지 판단하는 기준이 바로 Scheduling Metrics이다. 이 metric에는 성능측면(performance)에서 바라보는 기준, 공평한가의 측면(fairness)에서 바라보는 기준이 있는데 각각 밑에서 알아보겠다. 1.turnaround time(반환시간) turnaround time = completion time - arrival time 반환시간이란 해당 job이 도착했을 때부터 cpu를 다 사용해서 끝났을때까지 걸리는 시간이다. (job이 끝난 시간 - 도착한 시간) 그리고 반환시간..

운영체제 2023.03.20

Mechanism : Limited Direct Execution

Limited Direct Execution cpu를 가상화할때 필요한 mechanism에 대해서 알아보자. 여기서 direct라는 것은 사용자 프로그램이든, 커널이든 상관없이 cpu가 직접 처리한다는 의미이고, 성능때문에 그렇게 하고있지만 이렇게 될 경우 운영체제가 cpu를 직접 컨트롤(스케줄링)할수 없게 되는 문제가 생긴다. 그런데 운영체제 입장에서는 cpu를 하나의 자원으로 보고 적절히 스케줄링할 수 있어야 하기 때문에 성능손실 없이 cpu를 컨트롤하기 위해서 고안된 것이 바로 Limited Direct Execution(제한적 직접 실행)이라는 메커니즘이다. cpu가 물리적으로는 하나지만 모드는 두개가 있다. (user mode, kernel mode) 그리고 이 모드를 어떻게 설정하느냐에 따라서..

운영체제 2023.03.13

The Abstraction : The process

process와 virtualizing 소스프로그램을 컴파일하여 얻은 실행파일을 program이라고 하고, 이는 하드디스크에 저장되어 있다가 메인메모리로 로딩된다.(폰노이만 아키텍쳐) 그러면 메인메모리에 있는 이 코드를 cpu가 읽어다가 처리하고, 이 과정이 반복 수행되는 것을 '프로그램이 수행된다'라고 한다. 그리고 이렇게 프로그램이 실행될 때 나타나는 현상들을 추상화하여 개념적으로 정리해놓은 것이 process이다. 우리는 cpu를 가상화해서 여러개의 프로그램이 동시에 실행되는 효과를 얻을 수 있는데, 이때 실행되는 상태를 추상화한 것이 process이고, 메모리도 모자라는 상황에서 이것을 여러개의 프로그램이 사용하기 위해서는 메모리도 가상화가 필요하다. 여기에 필요한 것이 주소공간(address s..

운영체제 2023.03.12

Virtualizing CPU,Memory/ Concurrency/ Persistence

Virtualizing CPU (CPU의 가상화) int main(int argc, char *argv[]) { if (argc != 2) { fprintf(stderr, "usage: cpu \n"); exit(1); } char *str = argv[1]; //argv[0]은 자기자신, 커맨드 이름, 여기서는 cpu가 된다. argv[1]가 입력받은 값. while (1) { Spin(1); printf("%s\n", str); } return 0; } 자기 자신을 포함한 command line parameter 개수가 2개가 아니면 에러메시지를 출력후 빠져나가고, 2개일 경우 str변수에 담기는 파라미터값을 1초 간격의 무한 루프로 반복 출력하는 프로그램이다. prompt> ./cpu A & ./c..

운영체제 2023.03.07

좋은 객체지향 설계의 5원칙(SOLID)과 스프링

*인프런 김영한님 강의 [스프링 핵심원리 기본편]을 수강하며 작성한 글입니다. SOLID란? 클린코드로 유명한 로버트 마틴이 좋은 객체지향 설계의 5가지 원칙을 정리한 것. SRP = 단일 책임 원칙 (single responsibility principle) OCP = 개방-폐쇄 원칙 (open/closed principle) LSP = 리스코프 치환 원칙 (liscov substitution principle) ISP = 인터페이스 분리 원칙 (interface segregation principle) DIP = 의존관계 역전 원칙 (dependency inversion principle) SRP, 단일 책임 원칙 (single responsibility principle) 어떤 변경이 있을 때 파급..

Spring & SpringBoot 2023.01.25

대학생을 위한 컴퓨터네트워크 150제!

학교에서 컴퓨터네트워크 수업을 들으면서 만들어본 자료입니다!"컴퓨터 네트워킹 하향식 접근" (퍼스트북)을 주로 참고했고,중간대비 67문제+기말대비 76문제로 사실 정확히 150문제는 아니고 전체 143문제입니다.^^;또한 참고한 목차는 아래와 같습니다!CHAPTER 1 컴퓨터 네트워크와 인터넷CHAPTER 2 애플리케이션 계층CHAPTER 3 트랜스포트 계층CHAPTER 4 네트워크 계층CHAPTER 5 네트워크 계층:제어 평면CHAPTER 6 링크 계층:링크, 정송망, 랜CHAPTER 7 무선 이동 네트워크CHAPTER 8 컴퓨터 네트워크 보안CHAPTER 9 멀티미디어 네트워킹검토를 한번 한다고 해서 올리지만 중간중간 오타가 있을수도 있어요! 그리고 pdf가 필요하신 분은 밑에 비밀 댓글로 이메일주소..

네트워크 2023.01.13

mac os에서 mac주소, ip주소 확인하기

mac os의 CLI환경에서 mac주소나 ip주소 등을 확인하는 방법을 알아보자! 1. mac주소(물리적 주소)와 ip주소 확인 (윈도우에서는 ipconfig /all) 우선 mac에서 물리적주소는 cli가 아닌 인터페이스를 통해 확인할 수 있다. 사과모양 > 시스템환경설정 > 네트워크 > 고급 으로 들어가면 16진수 6개로 적힌 mac 주소를 확인할 수 있다. 여기서 수 하나가 16진수 2글자로 구성되어있으므로 맥주소는 총 6바이트로 이더넷 패킷에 적히게 된다. (통신할때 이더넷패킷의 destination 혹은 source부분에 이 값이 쓰여지게 될거다.) 2. 맥에서 ip주소 확인하기 ipconfig getifaddr en0 해당 명령어를 사용하면 ip만 간편하게 확인이 가능하다. 참고로 와이파이처럼..

네트워크 2022.12.22

mac os wireshark capture permission 에러 해결법

wireshark를 사용해서 프로토콜 분석을 하려구하는데 뜬금 캡쳐 권한관련 오류가 났다..ㅡㅡ; You don't have permission to capture on local interfaces. 이럴땐 sudo권한을 통해서 권한을 설정해주면 된다.. 좀 귀찮은것은 와이파이가 변경되면 똑같은 문제로 다시 권한설정을 해줘야한다는 점... sudo chown /dev/bpf* 여기서 sudo chown은 말그대로 change own 파일의 소유권과 그룹을 변경해주는 명령어이다. 1학년 전공수업에서 리눅스 명령어 달달외울때는 이거 써먹을데가 있을까 했는데 맥쓰다보니까 생각보다 많이 쓴다. 역시 전공수업은 열심히 들어놓으면 언젠간 도움이 되긴 되는것같다...ㅋㅋㅋㅋㅋ

네트워크 2022.12.20

mips pipeline hazard (컴퓨터구조 2022-2학기)

pipeline hazard 파이프라인 프로세서에서 명령어의 수행이 끝나기 전에 다른 명령어의 수행이 시작되기 때문에 생기는 문제! 기본적으로 pipeline stall을 하는 방법으로 해결할 수 있지만 (새 instruction을 fetch하지 않고 한 싸이클 쉬는것) stall이 많을수록 프로세서의 performance는 떨어지게 됨. 따라서 다양한 해결방법을 통해 stall을 최소화해야 한다. 1. Structural hazard pipeline에서 한 사이클동안 여러개의 instruction이 수행되어서 생기는 구조적 문제! 서로 다른 instruction이 같은 리소스를 사용할때 conflict가 발생한다. instruction memory와 data memory를 하드웨어상에서 분리해서 해결할..

컴퓨터 구조 2022.11.26