본문 바로가기

전체 글

(129)
File I/O system call in LINUX UNIX 계열 운영체제에서 파일의 종류는 크게 두 종류이다. 하나는 regular file, 우리가 흔힌 생각하는 파일이다. 예를 들면 txt, c, cpp 등등 또 다른 하나는 I/O device를 file 로 추상화한 special file이다. 이러한 파일에 데이터를 읽고 쓰는 read, write와 같은 함수들은 우리가 흔히 "비싼" 함수라고 한다. 그렇다면 이 함수들은 왜 비싼 함수라고 불릴까? 바로 이러한 입출력 함수들은 운영체제를 거쳐 실행되기 때문이다. 이렇게 운영체제에 도움을 요청하는 함수를 system call이라고 한다. linux에서 제공해주는 file i/o를 위한 system call을 알아보자 이번 함수의 기준은 man page를 기준으로 작성하였다. 다음은 가장 많이 쓰이는 ..
shell commands 보호되어 있는 글입니다.
deadlocks The Deadlock problem : 자원을 점유하고 있으면서 서로의 자원을 점유하기 위해 무한정 대기하는 문제 예를 들면 semaphore A와 B를 기다리는 프로세스 두개를 생각해보자 process 0의 wait(A)가 실행되고 context switch가 발생하여 process 1이 수행된다고 하자. 이 경우 process 1에서 wait(B)를 수행하고 나면 A와 B 모두 품절된 상태이다. (A는 0이, B는 1이 가져감) 그런데 process 1에서는 A를 대기하고 있고, process 0에서는 B를 대기하고 있다. 즉 서로의 자원을 서로가 대기하고 있기 때문에 무한정 대기하는 현상이 발생한다. 이와 같은 상황을 deadlock 이라고 한다. deadlock characterization :..
Android Studio로 천문 현상 정보를 알려주는 앱 만들기 2021/09/01~2021/12/14 분명 api parsing을 가을에 했었는데 프로젝트는 겨울에 끝난 기묘한 이야기 1. Astro 🪐 울산에서 좀만 가면 경상남도에는 영남 알프스라는 산이 있다. 근데 이상하게도 거기 정상에는 뜬금없이 영화관이 하나 있다. 중학교 때 가족들이랑 심야영화를 보러 영남알프스 꼭대기에 갔었다. 근데 차에서 내리자마자 하늘에 별이 쏟아질 것 같다는 말이 무슨 뜻인지 그때 알게 되었다. 난 시티걸이었기 때문에 그런 별들을 처음 봤었다. 진짜 별이 엄청나게 많이 보이는데 책에서 봤던 알파별까지도 다 보여서 계절별 대별자리도 눈으로 볼 수 있을 정도였다. 그리고 난 그때의 기억이 너무 생생해서 아직까지도 그걸 다시 보기위해 살고 있을 정도이다. 하여튼 그때의 경험으로 내가 천문..
synchronization 2 지난 포스트에서 동기화 기법인 Lock에 대해서 살펴보았다. 하지만 spinlock이나 disabling interrupt는 short, simple critical section에서만 효과적이다. Mutual exclusion을 제외하고는 별달리 뭘 해주지 않기 때문이다. 따라서 이를 해결하기 위해 동기화 기법들이 여럿 나오게 되었다. user mode에서 동기화를 해주는 것을 High level synchronization이라고 하며 우리가 자주 쓰는 semaphore, monitor는 여기에 해당한다. High level synchronization semaphore : shared data의 갯수 semaphore는 사용가능한 shared data의 수를 의미한다. 따라서 semaphore가 있는..
git에 commit을 잘못했을 때 지워버리자 1. git log 를 통해 commit, push 기록을 확인해보자 2. commit을 지우고 싶을 때는 reset을 쓰자 근데 reset에는 Option들이 있음 reset 옵션 –soft : add해서 staged된 상태를 보존함, 워킹 디렉터리의 파일도 보존함 –mixed : add하기 전에 unstaged 상태가 됨. 이게 기본이다. 워킹 디렉터리의 파일 보존함. –hard : add하기 전에 unstaged 상태가 됨. 근데 여기서 워킹 디렉터리의 파일도 지워버린다. 이렇게 하면 가장 최근의 commit을 지울 수 있음 reset 옵션과 함께 그 뒤에 다시 commit 할려면 add부터 하면 됨 왜냐면 mixed로 option을 줬기 때문
[Android] intent가 왜 이럴까 특정 시간 알림을 설정하는데 내 코드 구조는 1. intent에 알림 정보를 담아서 pendingintent에 넣음 2. 그걸 alarmManager.set() 로 설정함 3. alarmmanager 는 broadcast receiver를 상속받아서 구현 4. 거기에 전달된 intent에 (알림 정보 담겨있는 intent) string extra 정보를 꺼내서 다시 intent에 넣고 5. 서비스로 보내서 서비스에서 알림을 처리함 간단하게 MainActivity => BroadcastReceiver => Service 근데 이때 1번과 4번에서 사용한 인텐트 모두 명시적 인텐트를 사용했음 // 1번: 알림 매니저 설정하는 코드 Intent alarmIntent=new Intent(MainActivity...
[Android] common Intent: android에서 웹을 검색어로 연결하자 근데 여기에 RecyclerView를 곁들인. android에서 웹을 열고 싶은데 검색어를 검색한 웹을 열고 싶을 때는 common intent를 쓰면 된다 구글 공식 문서에 공통 인텐트에 대한 내용이 상세하게 나와있다. https://developer.android.com/guide/components/intents-common?hl=ko#java Intent의 action을 ACTION_WEB_SEARCH SearchManager.QUERY를 intent의 extra로 넣으면 된다. 구글 공식 문서에 잘 설명해둠 이걸 나의 프로젝트에 적용해보면 일단 recycler view의 item을 클릭했을 때 textView의 text를 가져와서 web으로 검색하는 코드이다. 그럼 쉽게 TextView query=v.findViewById(R.id.text..