일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 배낭문제
- 대외활동
- cpp02
- H-모빌리티 클래스
- 그리디
- 백준
- 컴퓨터구조
- 컴퓨터공학과
- 코틀린
- datapath
- 부동소수점
- 백준2098
- 분할과정복
- ios
- 알고리즘
- 데이터과학
- 탐색
- 데이터 과학
- 정렬
- 안드로이드스튜디오
- 유전학알고리즘
- 리액트네이티브
- 개발
- 외판원순회
- 앱심사
- 컴퓨터알고리즘
- 함수형 프로그래밍
- 카카오테크캠퍼스
- 판다스
- 프로그래밍 언어론
- Today
- Total
목록분류 전체보기 (66)
minkylee

Persistent Strorage전원이 꺼지더라도 데이터를 손상되지 않은 상태로 유지한다.HDDSSD저장소의 가상화에서 두 가지의 주요 추상화는 파일과 디렉토리이다. 파일과 디렉토리파일이름이 붙은 데이터 덩어리, 하드디스크, SSD 같은 저장장치에 저장되는 관련 정보의 묶음이다.inode : 파일은 내부적으로 숫자 ID로 식별된다. inode는 파일의 진짜 정보를 저장한다.한 파일 시스템 내에서 inode 번호는 유일하다.디렉토리파일을 체계적으로 정리하는 폴더, 디렉토리도 파일의 일동이다. 내용은 쌍으로 되어 있다. 계층구조를 지원한다. 디렉토리는 또 다른 디렉토리를 가질 수 있다. (트리 구조)디렉토리 안에 ("foo", "10")이라는 항목이 있으면 foo라는 이름의 파일은 inode 번호 10번..

메모리 종류FLASH : 고밀도, 저전력, 고속, 업데이트 가능, 데이터 보존 가능DRAM : 고속이지만 전원이 꺼지면 데이터 사라짐 (휘발성)ROM : 고정된 내용만 읽기 가능, 값 싸고 신뢰성 높음EPROM/EEPROM : 비휘발성, EPROM은 자외선으로 지우고, EEPROM은 전기적으로 바이트 단위 삭제 가능 플래시 메모리 flash memory cell은 Floating gate transistor를 사용하여 Floating Gate에 전자를 저장한다. 전자는 절연막으로 둘러싸여서 오래 유지된다.데이터는 이 전자의 유무로 표현된다. (없으면 1, 있으면 0) 플래시 메모리는 트랜지스터의 임계 전압을 바꿈으로써 1과 0을 구분한다. 이걸 통해 비휘발성 메모리가 된다. 특징Erase-before-w..

지속성은 데이터 저장에서 중요한 개념이다.I/O 장치 CPU와 메모리는 Memory Bus로 직접 연결됨일부 장치는 일반적인 I/O Bus (PCI, USB)로 연결됨I/O 장치는 두 부분으로 구성되는데 Hardware interface : 시스템 소프트웨어가 I/O 장치를 조작하는 제어판 역할Internals : 장치 내부 구조 (펌웨어, 메모리, 전용 칩 등) 운영체제는 장치에 있는 3개의 레지스터를 읽고 쓰는 것만으로 장치를 제어할 수 있다. 일반적인 I/O 장치 상태확인의 두 가지 방법으로는 폴링과 인터럽트가 있으며 각각의 방식은 특정 장치의 준비 상태를 확인하는 데 사용된다. 폴링 Polling운영체제가 장치가 준비될 때까지 상태 레지스터를 반복적으로 읽으면서 장치가 준비될 때까지 기다린다.간단..

세마포어정수 값을 가진 객체로 sem_wait() sem_post()로 조작할 수 있다.#include sem_t s; // 선언sem_init(&s, 0, 1); // 1로 초기화 sem_init의 두 번째 인수 0은 같은 프로세스 내의 스레드끼리 공유한다는 의미이다.초기값 1은 처음에 1개의 자원이 있다는 것을 뜻한다. sem_wait(sem_t *s) : 세마포어 s값을 1만큼 감소시키며 s 값이 음수라면 대기한다.음수일 경우 세마포어 값은 대기 중인 스레드 개수와 같다.sem_post(sem_t *s) : 세마포어 s값을 1만큼 증가시키며 대기 중인 스레드가 하나 이상 있으면 하나를 깨운다. 초기 값을 1로 줄 경우 이진 세마포어 (lock) 으로 동작한다. 즉 한 번에 한 개의 스레드만 접근이 ..
여러 작업을 동시에 처리할 때 어떤 작업은 다른 작업이 특정한 상태가 될 때까지 기다려야 할 때가 있다.예를 들어, 부모 스레드가 자식 스레드를 만들어서 어떤 일을 시키고 그 일을 다 마칠 때까지 기다렸다가 다음 일을 해야 하는 경우가 있다. (join) 이 때 부모 스레드는 자식 스레드가 완료되었다는 조건이 참이 될 때까지 기다려야 한다. 만약 이를 스핀 기반으로 구현한다면 CPU 시간을 낭비하게 되어 매우 비효율적이다. 조건 변수 조건 변수는 스레드가 원하는 실행 상태가 아닐때, 예를 들어 필요한 데이터가 아직 준비되지 않았거나 선행 작업이 필요한 경우에 자신을 대기열에 넣을 수 있게 한다. 다른 스레드가 상태를 변경하면 대기 중인 스레드 중 하나를 깨워 계속 진행할 수 있도록 한다. 스레드 간의 ..

공유 자원지역 변수는 각 스레드가 고유한 스택을 가지므로 스레드 간에 공유되지 않는다.글로벌 변수는 정적 데이터 세그먼트에 저장되어 모든 스레드에서 접근 가능하며,동적 객체는 힙(heap)에 저장되어 포인터를 통해 여러 스레드가 공유할 수 있다.하지만 공유 자원에 여러 스레드가 동시에 접근하게 되면,race condition(경쟁 조건)이 발생하여 프로그램의 출력이 비결정적일 수 있다.→ 즉, 같은 입력을 넣어도 실행할 때마다 결과가 달라질 수 있다. 이러한 문제를 해결하기 위해 동기화가 필요하다. 동기화는 한 번에 하나의 스레드만 자원을 사용할 수 있도록 한다. 그렇기 때문에 동시성을 제한한다. 또한 스레드의 실행 순서는 개발자가 직접 제어할 수 없기 때문에 더욱 주의가 필요하다. 임계 구역에 대한 ..

원래 프로그램은 한 번에 한 가지 일만 처리할 수 있다. 여러 일을 동시에 하려면 새로운 프로그램을 여러 개 만들어야 했는데 아주 번거롭고 비용도 많이 들었다. 그래서 프로그램 안에서 여러 일을 동시에 더 쉽고 저렴하게 처리할 방법이 필요해졌다. Thread 스레드는 단일 실행 프로세스를 위한 새로운 추상화이다. 즉 스레드(Thread)는 하나의 프로그램(프로세스)이 동시에 여러 작업을 실행할 수 있도록 만든 개념(추상화)이다. 각 스레드는 고유한 ID, 레지스터 집합, 스택을 가진다. 멀티스레드 프로그램은 하나의 프로그램 안에서 여러 개의 작업 흐름을 가질 수 있다. 멀티스레드멀티스레드 프로그램은 프로그램 안에서 여러 부분이 동시에 진행될 수 있다. 그래서 다음에 실행할 코드의 위치를 가리키는 Prog..

드디어! 반짝이맵이 앱스토어에 출시되었습니다!!! 앱을 출시하기까지 4번의 리젝과 48번의 빌드가 있었다근 1-2주동안 거의 잠도 못자고 작업해서 다들 예민해져 있었는데디코로 앱 테스트 중 승인 결과 나오고 소리질렀다!!! 으악!! 우리 됐따!!!! 첫 심사 기준 2주 정도만에 앱이 승인되었는데 두번째 심사부터는 기능을 대폭 추가 (알림, 채팅) 했기 때문에 실질적인 심사는 3번 정도 받은 것 같다. 리젝 사유가이드라인 원문은 https://developer.apple.com/app-store/review/guidelines 에서 볼 수 있다.Guideline 1.2 - Safety - User-Generated Content문제점 : 유저 차단, 24시간 안에 개발자 대응 매커니즘 필요우리 앱의 ..