IT 127

[OS] CPU Scheduling

Scheduling은 Process가 작업을 효율적으로 수행할 수 있도록, OS가 CPU 자원을 적절하게 분배하는 작업을 의미한다. CPU Scheduling은 크게 Preemptive Scheduling 과 Non-preemptive Scheduling 으로 나뉜다. 선점 스케줄링이라는 의미인 Preemptive Scheduling 은 단어의 의미 그대로 CPU 를 빼앗아 올 수 있는 스케줄링 방법이다. A Process 가 이미 CPU 를 점유하고 있더라도, 우선 순위가 높은 B Process 가 나타나면, CPU 를 빼앗아 올 수 있다. 따라서, 우선 순위가 높은 Process 를 빠르게 처리해야하는 경우에 유리한 방식이다. 그러나 CPU 를 빼앗아오는 Preemptive 현상이 발생하면 기존에 처..

IT/OS 2020.01.16

[C++] Thread 정리하기

얼마 전에 C++로 구현해야 하는 작업이 있었습니다. 구현할 때 Thread를 이용해야해서, 라이브러리를 이용했는데, 해당 내용을 정리하고자 합니다. "A thread of execution is a sequence of instructions that can be executed concurrently with other such sequences in multithreading environments, while sharing a same address space." - cplusplus.com "스레드는 우선, thread를 이용하기 위해서는 헤더를 include 해야 합니다. 아래는 cplusplus.com에서 소개하는 예제입니다. #include #include void foo() { // do..

IT/C++ 2020.01.15

[OpenStack] omd-2.60-labs-edition 관련 에러 해결 방법

[OpenStack] omd-2.60-labs-edition 관련 에러 해결 방법omd-2.60-labs-edition 로 인해서 clean.sh 후 stack.sh를 다시 할 때 에러가 발생. 에러 로그에 my_site가 아직 여전히 omd를 사용 중이라는 로그를 보고 $ sudo omd stop my_site$ sudo omd umount my_site$ sudo omd uninstall 을 통해 omd를 지웠다. 다시 $ sudo apt-get remove omd-2.60-labs-edition 를 통해 완전히 지우고 나니 mysql 쪽에서 계속 에러가 나던 것이 해결되었다. 중간에 apache2 에서 에러가 반복적으로 발생해서 무슨일인가 했더니 이 역시 omd에서 등록한 파일이 그대로 남아있어서 ..

IT/OpenStack 2018.03.12

[Wiki] PPPOE는 무엇일까?

[Wiki] PPPoE란?연구실에서 PPPoE를 쓸 기회가 있어서, 공부 겸 조사해보게 되었다. 이 글은 아래 출처를 번역한 글이다. PPPoE는 Point-to-Point Protocol over Ethernet을 나타내는 말로, Point-to-Point Protocol (PPP) 프레임을 이더넷 프레임 내에 encapsulating하기 위한 네트워크 프로토콜이다. PPPoE는 주로 개별 사용자들이 이더넷을 통해 DSL 모뎀에 접속하는 DSL 서비스에서 많이 사용되었다. 이더넷 네트워크는 패킷 기반이며, 연결이나 circuit을 구성하기 위한 여력이 없다. 또, 이더넷 네트워크는 IP와 MAC 충돌 그리고 DHCP 서버 속이기 등을 막아내는 기초적인 보안 기능도 결여되어 있다. PPPoE를 이용하면,..

IT/Network 2018.03.08

[Wiki] Windows 10에서 Vagrant up 할때 오류 발생 시 해결 방법

[Wiki] Windows 10에서 vagrant up할 때 오류 발생 시vagrant up을 하자, 컴퓨터가 멈추고 아무런 동작하지 않다가 제멋대로 리부팅하기 시작했다. 단순히 vagrant up을 했을 뿐인데 windows가 멈추고 꺼져버렸다. 그리고 제멋대로 재부팅이 되었다. 여러 커뮤니티와 깃헙 이슈를 살펴보니 "hyper-v"의 영향 때문이라고 하는 사람들이 많았다. 실제로 hyper-v를 끄고 나니 정상적으로 동작하였다. (근데, 이러면 docker for windows 는 어떻게 해야되지...)

IT/IT WIKI 2018.03.03

[Wiki] Ubuntu에서 bash_profile 파일을 찾는 경우.

[Wiki] Ubuntu에서 bash_profile 파일을 찾는 경우환경 변수를 추가할 일이 있어서 bash_profile을 찾다가, 도저히 못찾겠어서 검색을 해보았다.앞으로는 헷갈리지 않기 위해 이렇게 정리하게 되었다. 우선 우분투에는 bash_profile이 존재하지 않는다. 대신 .profile 파일이 존재한다. 따라서 PATH를 추가, 수정해야 하는 경우, .profile 파일을 수정해주면 된다. 만일 전체 계정에 대해 추가하고 싶다면, /etc/profile 파일을 수정해주면 된다.

IT/OS 2018.02.24

[OpenStack] Network dhcp port의 status가 DOWN일 때 해결 방법

Network dhcp port의 status가 DOWN일 때 해결 방법Network DHCP Port의 Status가 DOWN 상태여서 VM을 생성해도 IP를 받아오지 못하는 문제가 발생했다. 우선, 1sudo journalctl -f -u devstack@q-dhcpcs 로 dhcp에 해당하는 로그를 살펴본다. 그리고 오픈스택 대시보드에 접속하여 관리 > 네트워크 > 네트워크 > {해당 네트워크} > 서브넷 > 서브넷 편집 > 서브넷 세부 정보 > DHCP 사용 체크 해제 > 저장 이후 같은 방식으로 DHCP 사용 체크 하기 > 저장 하고 잠시 기다리면 DHCP Port Status가 UP으로 바뀌어 있는 것을 확인할 수 있다.

IT/OpenStack 2018.02.22

[Network] Transport Layer (트랜스포트 계층) - 3.3 비연결형 트랜스포트: UDP

3.3 Connectionless Transport: UDP만약 우리가 트랜스포트 계층 프로토콜의 설계에 관심이 있다고 하자. 그렇다면, 이 프로토콜은 적어도 네트워크 계층과 해당하는 애플리케이션 레벨 프로세스 간의 데이터를 넘겨주기 위해서 multiplexing과 demultiplexing 서비스를 제공해야 한다. [RFC 768]에 정의된 UDP는 트랜스포트 계층 프로토콜이 할 수 있는 최소 기능으로 통신한다. UDP는 multiplexing과 demultiplexing 기능과 간단한 오류 검사 기능을 제외하면 IP에 아무것도 추가하지 않는다. 다시 말해, 애플리케이션이 UDP로 통신한다면, 이는 IP와 직접 통신하는 것과 다름없다. UDP는 세그먼트를 송신하기 전에 송신 트랜스포트 계층의 개체들과 ..

IT/Network 2018.01.16

[Network] Load Balancing and Clustering (로드밸런싱과 클러스터링)

Load Balancing and Clustering (로드밸런싱과 클러스터링)1. 로드밸런싱이란?서버의 로드를 클러스터링한 서버별로 균등하게 나누어주는 서버를 말한다. 예를 들어, 하나의 서버에 사용자가 많이 몰릴 경우, 해당 서버가 다운될 수 있다. 또 서버에 이상이 생기는 경우에도 서버가 다운될 수 있다. 로드밸런싱을 이용하면 한 서버가 다운되더라도 이중화시킨 다른 서버에서 서비스를 지속하여, 사용자들이 문제를 인지하지 못하게 할 수 있다. 로드밸런싱의 성능과 안정성이 보장되어야 하는 경우 특별한 하드웨어 장비가 이용되는데, 이것이 로드밸런서 이다. (물론 로드밸런서는 소프트웨어로도 구현이 가능하다.) 로드밸런싱을 위한 서비스 요청 처리 알고리즘은 다양하다. 랜덤, 라운드 로빈, CPU나 메모리 사..

IT/Network 2018.01.15