분류 전체보기 103

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

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

MIPS pipeline control 회로 mips instruction을 실행할 수 있는 pipeline에 control회로를 추가해볼것이다. mux의 연결방향을 결정해주는 control들은 pipeline register를 늘려서 그 일부에 저장해주면 된다. 이 control들은 opcode 6bits에 의해 결정되는데, CC2에 생성되어서 CC3부터 사용된다. IF/ID pipeline register에서 읽은 opcode 6bit를 input으로 하는 컨트롤회로(조합회로)에서 9bit의 control signal을 output으로 만들어 내고, 그 9bit를 ID/EX pipeline register에 쓰게된다. 그리고 이 control signal 9bit를 또 4bit/ 3bit/ 2bit로..

컴퓨터 구조 2022.11.25

학교 공지사항 웹 크롤링 하기

학교 정보를 편리하게 제공해주는 웹사이트를 만들면서, 사용자의 전공에 맞춰서 해당학과의 공지사항을 우리 서비스의 메인페이지에서 보여주려고 했다. 그래서 학과별 홈페이지의 공지사항을 크롤링할일이 생겼는데 생각보다 재밌었다!! 아래는 예시 코드이당 import re import requests from bs4 import BeautifulSoup as bs from rest_framework.generics import ListAPIView from rest_framework.response import Response # 예술대학 (음악학부, 미술학부, 공연예술학부) def arts(self): result = [] baseUrl = 'https://art.kookmin.ac.kr/community/not..

기타 개발공부 2022.11.25

도커 컴포즈 오류 docker-entrypoint.sh: no such file or directory

exec /docker-entrypoint.sh: no such file or directory 맥환경에서 세팅한 파일을 윈도우로 pull받아서 도커컨테이너를 다시 빌드하는 과정에서 해당 오류가 났다. 원인은 윈도우가 LF를 자동으로 CRLF로 받아오면서 발생한 문제였는데, 깃 자체에서 이 변환을 자동으로 하는것을 막아주는 옵션이 있었다. # window git config --global core.autocrlf true 참고로 변경된 해당 설정은 새로운 파일부터 적용되므로, 이전에 받아온 프로젝트 파일에서 오류가 났다면 REMOTE에서 다시 클론을 받아와야 한다. 래아래 링크를 참고했다. https://bgpark.tistory.com/81 docker-compose 사용시 /usr/bin/env: ..

Docker 2022.11.25