본문 바로가기

분류 전체보기110

비트코인의 Transaction fee 이번 포스팅에서는 비트코인의 Transaction fee에 대해 알아보겠습니다. 선수지식으로는 비트코인의 UTXO에 대해 알고 있어야 합니다. 만약 모르신다면 다음 글을 먼저 읽어보세요. up-to-date-items.tistory.com/91 비트코인에서 상대방에게 비트코인을 전송하기 위해서는 수수료가 필요합니다. 많이들 착각하는 사실중 하나는 이 수수료가 transaction의 가격이 높을 수록 많이 든다는 것입니다. Mastering Bitcoin에 다음과 같이 나와있습니다. Transaction fees are calculated based on the size of the transaction in kilobytes, not the value of the transaction in bitcoin.. 2021. 3. 14.
운영체제 가상메모리#3 Page Fault&Page Algorithm Page Fault CPU가 MMU를 통해서 가상주소를 물리주소로 바꾼 후에 메모리에 접근을 했는데 만약 원하는 페이지가 없다면 하드웨어에서 페이지를 가져와야 할 것이다. 이 때 페이지가 없는 경우를 Page Fault라고 하며 Page Fault발생시 OS에 interrupt를 걸게 된다. 그럼 OS는 IDT(Interrupt Descriptor Table)에 따라 Page Fault관련 인터럽트 처리를 실행하게 되는데 그럼 하드웨어에서 페이지를 가져온 후 다시 MMU를 통해 가상주소를 물리주소로 변환 후 페이지를 실행한다. * MMU가 메모리로부터 가상주소를 물리주소로 변환하기 위해 1. 가상주소를 토대로 메모리에 요청 2. 메모리는 물리주소를 MMU에게 가르쳐줌 3. 메모리로부터 받은 물리주소로 페.. 2020. 12. 15.
운영체제 가상메모리#1 가상메모리의 탄생 배경 폰노이만 구조에서 프로그램은 메모리에 올라와야 사용할 수 있다. 현재 자기의 컴퓨터가 8기가의 메모리를 가지고 있다고 할 때 리눅스 같은 경우 프로세스 하나에 4기가를 사용하는데(간단한 C언어 프로그램을 컴파일해서 1KB크기의 프로그램이더라도 실행시 4GB의 프로세스를 갖게된다) 그럼 단 2개의 프로세스만 올려야 할까? 이건 너무 비효율적이기 때문에 가상메모리의 개념이 나왔다. cpu가 프로세스 하나를 통째로 막 0.1초만에 실행하는게 아니고 순서대로 실행하므로 특정시간에 특정 부분의 프로세스를 실행하게 될것이므로 메모리 내에 프로그램을 통째로 올리는게 아니고 일부분만 올려놓고 실행하면서 바꿔가는 개념이다. 위처럼 각 프로세스들은 동일한 시작주소의 가상주소를 갖게 되고 이 가상주소.. 2020. 12. 13.
운영체제 파이썬의 gil과 멀티쓰레딩 파이썬은 gil이라는 특성 때문에 한번에 쓰레드 하나밖에 사용하지 못한다. 이는 파이썬이 느린 이유중에 하나이기도 하다. 근데 분명 파이썬에도 멀티쓰레딩을 위한 기본 모듈들이 있다. 여기서 의문이 들어서 찾아보았다. 내가 이해한 바로는 I/O작업 즉, 파일 읽기, 쓰기 등의 작업을 할 때는 파이썬이 gil을 풀어주기 때문에 I/O 작업을 할 때는 멀티쓰레딩이 가능해진다. 컴퓨터 구조상 I/O작업의 속도는 메모리 접근이나 레지스터 접근에 비해서 엄청나게 느리다. 그래서 I/O작업에서만 멀티쓰레딩이 가능해도 많은 성능이 개선될 수 있다. 2020. 12. 12.