전체 글 39

[운영체제] 10. 페이징

1. 페이징의 개요1) 연속 메모리와 Segmentation 기법의 단점- 프로그램이 한 두 개 이상이면 문제가 발생Segment의 크기가 클 경우 메모리 할당이 가면 갈수록 어려워진다.관리 자체가 더 힘들다 -> 검색 효율이 저하되며 메모리 운용 속도도 저하된다.-> 이와 같은 문제로 페이징 기법이 등장했다.2) 페이징이란?- 고정 - 분할 방식을 이용한 가상 메모리 관리 기법이다.- 프로세스의 주소 공간을 0번지부터 동일한 크기의 페이지로 나눈다.- 물리 메모리도 역시 0번지부터 페이지 크기로 나누고 프레임이라 부른다.- 페이지의 크기는 주로 4KB이다.- 페이지 테이블은 각 페이지에 대해 페이지 번호와 프레임 번호를 1:1로 저장하는 테이블이다.3) 페이징의 장점1. 용이한 구현 : 고정 크기로 단..

CS 전공/OS 2024.06.23

[운영체제] 9. 메모리 관리

그동안 운영체제를 CPU의 관점으로 봐왔다. 이번에는 프로그램을 관리하는 장소인 메모리에 대해 알아볼 시간이다.1. 메모리 관리1) 메모리 관리가 필요한 이유1. 메모리는 공유 자원이기 때문이다.- 여러 프로세스 사이에 메모리가 공유되고 각 프로세스에게 물리 메모리를 할당한다.2. 메모리를 보호해야 한다.- 프로세스의 독립된 메모리 공간을 보장하고 다른 프로세스로부터 메모리 공간을 보호해야 한다.- 사용자 코드로부터 커널 공간을 보호해야 한다.3. 메모리 용량 한계를 극복해야 한다.- 설치된 무리 메모리보다 큰 프로세스의 지원이 필요할 때가 있다.4. 메모리의 효율성을 증대시킬 수 있다.- 가능한 많은 개수의 프로세스를 한 번에 실행시키는 것이 좋다. 또한, 프로세스 당 최소한의 메모리로 할당한다.2) ..

CS 전공/OS 2024.06.23

[운영체제] 8. 교착상태

1. 교착상태1) 교착상태의 정의자원을 소유한 채, 모두 상대방이 소유한 자원을 기다리면서 무한 대기에 빠지는 상태이다. 교착상태하면 항상 나오는 문제로 식사하는 철학자 문제가 있다.2. 식사하는 철학자 문제1) 식사하는 철학자 문제조건은 다음과 같다.1. 5명의 철학자가 원탁에서 식사한다.2. 자리마다 스파게티 1개와 양 옆에 포크가 있다.3. 식사를 하기 위해서는 양 옆의 포크가 동시에 들려야 한다.4. 왼쪽 포크를 먼저 들고 다음 오른쪽 포크를 드는 순서이다. 저 조건이라면 누구 한 명은 식사를 할 수 없다..! 그럼 왜 못하는 걸까..? 원인 : 환형 요청/대기 : 원으로 앉아 있기에 스스로 해체 불가능하다.해결 : 원형 상태로 안 만들면 되지!2) 컴퓨터 시스템에서의 교착 상태식사하는 철학자의 ..

CS 전공/OS 2024.06.23

[운영체제] 7. 프로세스와 쓰레드의 동기화 (Synchronization)

1. IPC (Inter - Process Communication) 일단 프로세스 간의 통신을 봐봅시다. 원래 원칙상으로는 프로세스끼리 통신은 힘들다. 프로세스끼리의 간섭을 없애기 위해 서로의 영역을 침범하지 않기 때문이다. 따라서, 쓰레드 간의 통신을 이용하여 프로세스끼리 통신을 한다. 하지만 프로세스끼리 통신은 필수이다. 당연하다. 우리가 컴퓨터 프로그램을 쓰면서 크롬만 켜지는 않을 것이다. 카카오톡도 켜고 동영상 강의도 틀고 op.gg도 켜고  아무튼 다양한 프로그램을 쓰기 때문이다. 또 어떤 컴퓨터 프로그램은 여러 프로세스로 구성이 되기에 프로세스간 통신은 필수이다. 그렇다면 프로세스의 종류는 뭐가 있을까? 1) IPC의 종류1. 프로레스 내부 데이터 통신 (== 쓰레드)- 하나의 프로세스 내에..

CS 전공/OS 2024.06.23

[BOJ] 2525. 오븐 시계

문제는 다음과 같다. 문제를 푸는 데 다음과 같은 과정을 생각했다.1) 입력값으로 시(h), 분(m)을 입력 받은 뒤,2) 추가 시간(add_m)을 입력한다.3) 추가시간에 60을 나눈 몫에 h를 더한 뒤(h + (add_m//60))4) 추가시간에 60을 나눈 나머지에 m을 더한다. (m + (add_m%60))5) 근데 m이 60을 넘는다면? h에 1을 더하고 60을 빼준 뒤,6) 또, h가 24가 넘는다면 다시 -24를 해준다. 그래서 코드가 다음과 같이 나왔다.더보기더보기h, m = map(int, input().split())add_m = int(input())h += add_m // 60m += add_m % 60if m >= 60: h += 1 m -= 60if h >= 24: ..

Python/BOJ 2024.06.15

[BOJ] 2884. 알람 시계

여기서 조건문을 써야할 때는 입력 시간의 분이 45분이 넘냐 안 넘느냐에 따라 달라진다. 만약 45분이 넘는다면 기존 분에 -45만 하여 출력하면 된다. 45분이 적을 때에는 기존 시간에서 15분만 더하면 된다. (60을 더해준 후 45를 빼면 된다. 결론적으로는 15분을 더하면 된다는 말). 하지만 45분이 적을 때도 한 가지 걸리는 점이 있다. 바로 입력 시간의 시간이 0일 경우이다. 0에서 -1로 갈 수 없기에 입력 시간이 0 이면서 45분이 안 넘는다면 23시로 적은 후 15분만 더해주면 된다. 이와 같이 코드를 짜면 다음과 같다.더보기h, m = map(int, input().split())if m >= 45: print(h, m - 45)elif m

Python/BOJ 2024.06.11

[데이터베이스] 11. 보안과 권한 관리

1. 보안1. 데이터베이스 보안의 목표데이터베이스에는 다양한 데이터가 저장이 되어 있으므로, 보안에 유의해야 한다. 조직에서 허가한 사용자만 데이터베이스에 접근할 수 있도록 통제하여 보안을 유지하는 것이다.I. 물리적 환경에 대한 보안: 자연 재해처럼 데이터베이스에 물리적 손실을 발생시키는 위험으로부터 데이터베이스를 보호한다.II. 권한 관리를 통한 보안: 접근이 허락된 사용자만 권한 내에서 데이터베이스를 사용하도록 보호한다.III. 운영 관리를 통한 보안: 접근이 허락된 사용자가 권한 내에서 데이터베이스를 사용하는 동안 데이터 무결성을 유지하도록 제약 조건을 정의하고 위반하지 않도록 통제한다.2. 권한 관리1. 권한 관리의 개념1. 접근 제어 : 계정이 발급된 사용자가 로그인에 성공했을 경우에만 DB에..

CS 전공/DB 2024.06.10

[BOJ] 10171. 고양이

문제는 다음과 같다. 굉장히 귀여운 문제라고 볼 수 있다. 그대로 복사해서 붙여넣기 해서 하면 될 줄 알았으나... 절대 되지 않는다. 그 이유는 바로 백슬래시(\)와 따옴표(')에 있다. 따옴표(작은 따옴표, 큰 따옴표 둘 다)와 백슬래시를 출력 창에서 보기 위해서는 앞에 백슬래시를 한 번 더 써줘야 한다. 따라서 복붙하되 따옴표와 백슬래시는 앞에 백슬래시를 한 번 더 붙여줘야 출력이 된다.더보기print('\ /\\')print(' ) ( \')')print('( / )')print(' \\(__)|')

Python/BOJ 2024.06.10

[데이터베이스] 10. 인덱스

1. 인덱스의 개요1. 인덱스의 개념 및 문제점 우리가 전공서를 보다 보면 뒤에 인덱스라고 단어가 굉장히 많이 나와있는 것을 볼 수 있다. 우리가 어떤 단어가 무슨 페이지에 있는지 알기 위해 인덱스를 주로 사용하는데, 데이터베이스에서 인덱스도 이와 같은 내용이다. 한마디로 인덱스는 '데이터를 좀 더 빨리 찾을 수 있는 도구'라고 볼 수 있다. 이 말은 즉, 검색 속도가 빨라진다는 것이다.  하지만, 인덱스에도 단점이 있다. 우리가 전공서에 모든 단어를 뒤에 인덱스에 집어넣게 된다면 책의 분량이 엄청나게 많아진다. 완전 극단적으로 생각하자면, 인덱스가 더 많아지면 본문보다 인덱스가 더 많아진다는 이상한 상황이 될 수 있다는 것이다. 이는 즉, 쓸데없이 차지하는 공간만 늘어나고 쓰지를 않는다는 것이다. 이렇..

CS 전공/DB 2024.06.08

[BOJ] 1000. A+B

문제는 다음과 같다. 단순히 두 수를 더해주면 된다. 근데 두 수를 어떻게 받을 것이냐이다. 물론 A = int(input()), B = int(input()) 이런 식으로 두 개의 함수를 사용해서 문제를 풀 수는 있다. 하지만, 조금이나마 간결하게 하기 위해서 다음과 같이 코드를 짜보았다.더보기더보기A, B = map(int, input().split())print(A+B) 그렇다면 map 함수는 무엇인가? map 함수의 형식은 다음과 같다.map(function, iterable) iterable 부분에는 리스트나 튜플과 같은 자료형이 와야 한다. map 함수의 장점은 알아서 자동적으로 리스트를 함수에 적용해준다는 것이다. 단계별로 풀어보기 아래도 똑같이 풀면 된다.

Python/BOJ 2024.06.08