전체 글 100

Bandit Level 2 → Level 3

📌 문제홈 디렉터리 아래에 spaces in this filename 이라는 파일안에 bandit3의 비밀번호가 들어있다고 한다. 해당 파일을 읽어서 비밀번호를 찾으면 된다. 이 문제를 통해서 파일 이름에 공백이 있는 경우 파일을 읽는 방법에 대해 알아보자    📌 풀이  cat 명령어는 동시에 여러개의 파일을 읽을 수 있고, 각각의 파일 이름을 공백으로 구분한다. cat [파일이름1] [파일이름2] ..... 따라서 spaces in this filename 이라는 파일의 이름을 그대로 입력하게 되면, cat은 하나의 파일이 아닌 4개의 파일을 각각 읽으라는 의미로 인식하게 된다. bandit2@bandit:~$ lsspaces in this filenamebandit2@bandit:~$ cat ...

OverTheWire/bandit 2025.01.10

Bandit Level 1 → Level 2

📌 문제앞선 문제들과 비슷하게 홈 디렉터리 아래의 - 파일안에 bandit2의 비밀번호가 들어있다고 한다. - 파일 안에 있는 비밀번호를 읽으면 된다.  이 문제를 통해 -로 시작하는 파일 읽는 방법에 대해알아보자    📌 풀이  파일을 읽는 명령어는 cat이므로 cat [ 파일 이름] 을 이용하여 내용을 읽으려고 했다. 그런데 그렇게 입력해도 계속 대기만 할 뿐 파일의 내용을 읽지 않는다. 그 이유는 파일의 이름과 관련이 있었다.  파일의 이름이 - 이다. 보통 리눅스의 명령어에서 - 다음에 옵션들을 붙여서 여러가지 기능들을 추가적으로 수행 할 수 있도록 해준다. 그래서 쉘은 cat 다음에 들어온 - 를 파일의 이름으로 읽는것이 아닌, - 옵션을 위한 특수문자로 인식하여 사용자로부터의 입력을 기다리..

OverTheWire/bandit 2025.01.10

Bandit Level 0 → Level 1

📌 문제 설명bandit0의 홈 디렉터리 아래에 있는 readme 파일 안에 bandit1의 비밀번호가 들어있다고 한다. 해당 비밀번호를 이용하여 bandit1에 ssh 접속을 하면 된다.이 문제를 통해 파일을 읽는 방법에 대해 정리해보자    📌 풀이파일을 읽을때는 cat 명령어를 이용해서 읽으면 된다. 이렇게 비밀번호를 확인했다면 서버에 bandit1 이라는 유저 아이디로 로그인을 해야하기 때문에, 현재 로그인 되어있는 bandit0에서 로그아웃 해줘야한다. bandit0@bandit:~$ lsreadmebandit0@bandit:~$ cat readmeCongratulations on your first steps into the bandit game!!Please make sure you ha..

OverTheWire/bandit 2025.01.10

Bandit Level 0

📌 문제이 단계에서는 ssh를 이용하여 원격 컴퓨터에 로그인을 하는 것이다. 원격 컴퓨터의 hostName은 bandit.labs.overthewire.org , 포트번호는2220 이다. 접속 아이디는 bandit0, 비밀번호도 bandit0 이다.  이 문제를 통해 ssh란 무엇인지, 그리고 접속을 어떻게 하는지 정리해보자   📌 풀이 내가 해당 서버에 접속해야하는 입장이므로 SSH Client가 되고, bandit.labs.overthewire.org가 SSH Server가 된다. 윈도우의 경우 원래 ssh기능을 지원하지 않았기 때문에 PuTTy라는 프로그램을 이용하여 ssh 통신을 해야했다.  하지만 마이크로소프트가 OpenSSH를 윈도우에 통합하여 이제는 별도의 프로그램 없이도 ssh접속이 가..

OverTheWire/bandit 2025.01.10

SSH란

SSH란 secure shell의 약자로, 컴퓨터와 컴퓨터가 공용 네트워크를 통해 통신할때 보안적으로 안전하게 통신하기 위해 사용하는 네트워크 프로토콜을 말한다.   브라우저가 웹 페이지를 보여주기 위해 서버와 통신할때 HTTP 프로토콜을 이용하는 것과 같이, 서로 다른 컴퓨터들이 쉘을 이용하여 통신하기 위한 프로토콜이 필요했고 FTP,Telnet을 거쳐서 SSH가 사용되고 있다.  원격지의 컴퓨터에 쉘을 통해 안전하게 접속하기 위한 프로토콜   SSH의 등장배경은 ftp,telnet의 경우 컴퓨터가 통신을 할때 메세지가  암호화 되어있지 않아서(평문) 스니핑 공격에 노출되어있었다. 따라서 이러한 스니핑 공격을 막고자 SSH라는 네트워크 프로토콜이 탄생하게 되었다. SSH는 주로 데이터 전송이나 원격 접..

cs/네트워크 2025.01.10

3장 타입과 추상화

추상화 객체지향 패러다임과 추상화의 관계: 객체를 개념을 이용하여 분류하여 추상화한다.    차이점을 무시하고 공통점만을 취해 트럼프라는 개념으로 단순화 한것은 추상화의 일종이다.  수 많은 객체들을 개별적인 단위로 취급하기에는 인간의 인지능력에 한계가 있다. 따라서 공통점을 기반으로 객체들을 묶기 위한 그릇인 개념이 필요하다.  개념을 이용하면 객체를 그룹으로 만들어 분류할 수 있다. 개념은 공통점을 기반으로 객체들을 분류 할 수 있는 일종의 체와 같다.  객체에 어떤 개념을 적용해서 개념 그룹의 일원이 될때 객체를 그 개념의 인스턴스 라고 한다.   추상화는 두가지 차원에서 이루어진다. 1. 사물들간의 공통점은 취하고, 차이점은 무시하여 일반화를 통해 단순화 한다. (분류)2. 중요한 부분을 강조하기..

명품 운영체제 9장 - 페이징 메모리 관리

페이징 개념 페이징은 프로세스를 페이지 라고 불리는 고정 크기로 나눈다. 물리 메모리 또한 페이지와 같은 크기인 프레임 으로 분할하여,  프로세스의 각 페이지를 물리 메모리의 프레임에 할당한다.  페이징 기법은 프로세스의 주소 공간을 페이지 크기로 자르기 때문에, 페이지의 경계를 고려하지 않고 코드 데이터 힙을 연이어 배치한다. 하지만 실제 운영체제에서는 코드,데이터,힙을 쉽게 관리하기 위해 데이터와 힙 영역이 서로 다른 페이지에서 시작되도록 배치한다.   페이지의 경계를 고려하지 않는다는게 무슨 말일까? 아래에서 예시를 통해 이해해보자.  페이지 크기는 4KB이고,  프로그램의 논리 주소 공간은 10KB라고 하자. 그리고 프로세스는 아래와 같이 구성된다고 해보자. 코드: 5KB데이터: 3KB힙: 2KB..

cs/운영체제 2024.12.05

명품 운영체제 8장- 메모리 관리, 연속 메모리 할당, 세그먼테이션

메모리 할당운영체제가 새 프로세스를 실행시키거나, 실행중인 프로세스가 메모리가 필요할때 프로세스에게 물리 메모리를 할당 하는 것이다. 그렇다면 프로세스를 물리 메모리의 어느 위치에 적재할지는 어떻게 결정하는 것일까?       운영체제의 메모리 할당 기법은 아래와 같이 구분할 수 있다.       연속 메모리 할당연속 메모리 할당이란 프로세스가 할당 받은 메모리가 한 덩어리로 연속된 공간이라는 의미이다. 연속 메모리 할당은 고정된 공간에 프로세스를 할당하는지, 프로세스의 크기에 따라 가변적으로 변하는지에 따라 고정 크기 할당과 가변 크기 할당으로 나뉜다.  고정 크기 할당메모리 전체를 파티션이라는 고정 크기로 분류하고, 파티션 1개에 프로세스 1개를 넣는 방식이다. 이 방식은 메모리를 고정 크기로 분리하..

cs/운영체제 2024.12.04

7장 교착 상태

교착 상태자원을 소유한 스레드들 사이에서  다른 스레드가 소유한 자원을 요청하여 모든 스레드가 무한정 대기하는 현상이다. 공유 자원에 대한 동기화 문제중 하나이다. 교착상태는 단일 cpu 환경과 멀티 코어 환경 모두에서 발생 할 수 있는 문제다.  교착상태는 사용자 응용프로그램 내에서 주로 발생한다. 커널은 교착상태를 고려하여 매우 정교하게 잘 작성되어있지만 사용자가 작성한 프로그램은 그렇지 않기 때문이다.  하지만 교착상태를 막도록 운영하는 컴퓨터 시스템은 거의 없다. 교착상태를 막기 위해서는 많은 시간과 비용이 들기 때문이다.   교착 상태 유발 요인 자원 멀티스레드가 자원을 동시에 사용하려는 충돌에서 발생  자원과 스레드 스레드가 실행되는 동안 한 개의 자원만 필요한 경우 교착상태가 발생하지 않는다..

cs/운영체제 2024.12.03

유니온 파인드

유니온 파인드 알고리즘은 두 노드가 하나의 집합에 속하는지 판별하고 싶을때 매우 유용하게 사용되는 방법이다. 노드를 합치는 Union 연산과 노드의 루트 노드를 찾는 Find 연산으로 이루어진다.   이렇게 복잡한 그래프에서는 빠른 시간 안에 두 노드가 연결되어 있는지 판별하는 게 힘들다.바로 이런 경우에 두 노드가 연결되어 있는지, 끊어져 있는지를 판별하는 방법이  "유니온 파인드" 이다.  두 노드가 연결되어있는지 판단하는 방법은 ,  두 노드가 하나의 집합 안에 포함되는지 확인하면 된다. 그렇게 하기 위해서는 먼저 연결되어있는 노드들을  하나의 집합으로 만드는 과정이 필요하다.  바로 이 과정이 Union (유니온) 이다.  예를들어, 1호선이 지나가는 역들은 모두 남색선으로 표시하였다. 이것이 바..