분류 전체보기
-
운영체제 - 7(교착상태)OS 2019. 7. 2. 14:48
교착상태 - Deadlock : 두개 이상의 프로세스가 필요한 자원을 기다리면서 무한정 중지된 상태 1. 발생원인 : 제한된 자원에서 프로세스의 이용률을 높이고, 시스템 효율성을 높이려는 과정에서 부작용으로 발생 * 프로세스의 자원이용 순서 1) 요청 : 자원요청 -> 자원할당 2) 사용 : 할당된 자원 사용 3) 해제 : 할당자원을 반납 후 종료 2. 필요충분조건 : 상호배제 + 점유와 대기 + 비선점 + 순환 대기 => Deadlock이 왜 발생하고, 어디에서 발생하는지 알아야 할 필요가 있다 3. 자원할당 그래프 : 프로세스 집합과 자원들로 구성된 간선 집합을 통해 자원과 프로세스 간 관계를 그래프로 나타낸 것 - 이 그래프에서 사이클이 생기면 Deadlock이 발생한 것 P1이 R2를 요청 -> ..
-
[안드로이드] EditText의 Enter 키 아이콘 활성하기Coding/Android 2019. 7. 1. 21:50
대부분의 검색 포털이나 브라우저, 혹은 그냥 단순한 text 수정창에 입력하려고 키를 올리면 키보드에 동그라미친 돋보기 모양 아이콘이 활성화 되어 있습니다. 이는 기본 속성이 아니며, EditText의 속성값을 변경해 주어야 돋보기 모양 아이콘으로 변경됩니다. EditText의 Design 탭에서, 우측에서 Open All Attributes를 클릭하면 사용 가능한 속성들이 쭉 나오게 됩니다. 이중 접혀있는 imeOptions를 클릭하여 열면 actionSearch라는 속성이 있고(Default는 False입니다) 이를 체크해서 True로 바꿔주면 위의 그림처럼 키보드에 검색 아이콘이 뜨게 됩니다
-
[안드로이드] 코틀린 기본 문법 -8 (클래스 상속)Coding/Android 2019. 7. 1. 21:26
기본적으로 Java에서는 클래스상속을 extends라는 키워드를 통해 손쉽게 할 수 있었습니다. 하지만 Kotlin에서의 클래스는 기본적으로 상속이 금지됩니다. 상속이 가능하게 하려면 open 키워드를 클래스 선언 앞에 추가해줘야 합니다. class Monster { // 이 클래스는 상속받을 수 없음 } open class Animal { // 상속받을 수 있음 } class Dog : Animal() {// Animal을 상속받는 Dog 클래스 }
-
[안드로이드 - 코틀린] removeAllViews - 모든 뷰 제거하기Coding/Android 2019. 6. 29. 13:16
한 LinearLayout이 있다고 가정해봅시다. 그 안에는 버튼과 텍스트뷰 등등이 들어있습니다. 만약에 동적으로 이 버튼과 텍스트뷰를 모두 없애 화면을 깨끗하게 만들어야 할 경우가 있을 수 있습니다. 그럴 때 사용하는 것이 removeAllViews() 메소드입니다. myLinearLayout.removeAllViews() 이러면 myLinearLayout에 있는 모든 View들이 사라지게 될 것입니다.
-
[안드로이드 - 코틀린] 동적으로 텍스트뷰 추가하기Coding/Android 2019. 6. 29. 13:10
기존에 레이아웃에서 텍스트뷰를 미리 추가해놓을 수도 있지만, 이벤트가 진행되면서 동적으로 텍스트뷰를 추가해야 할 경우가 생길 수 있습니다. Java에서는 Toast라는 기능을 사용하였으나 Kotlin에서는 보다 간편하게 텍스트뷰를 추가할 수 있습니다. LinearLayout은 수직으로 자식 뷰를 추가하는 특성을 갖고 있기 때문에 이를 활용하여 동적으로 텍스트뷰를 추가하는 코드는 다음과 같습니다. val textView = TextView(this) textView.text = "글자" myLinearLayout.addView(textView) 이렇게 addView 메소드를 이용하여 동적으로 텍스트뷰를 추가할 수 있습니다.
-
운영체제 - 6(모니터, IPC)OS 2019. 6. 28. 14:05
상호배제 / 동기화 1. 모니터 등장 이유 - 세마포어 변수에 영향을 미치는 P, V 연산이 프로그램 전체에 널리 퍼져 세마포어에 미치는 영향 파악이 어렵다 -> 프로그램 작성 어려움 -> 상호배제 및 프로세스 사이의 조정을 위한 유연성, 강력한 도구가 필요 2. 모니터 프로세스의 동기화 기법 - 모니터 : 조직적인 구성체를 두어 공유자원, 임계영역을 체계적으로 관리 - 일종의 클래스 개념으로 묶어버린 소프트웨어 모듈 객체 - 모니터 경계에서 한번에 한 프로세스만 진입하도록 제어되므로 상호 배제 원칙을 지킬 수 있음 IPC(Inter Process Communication) - 프로세스 간에 서로 데이터를 주고받기 위한 목적의 커뮤니케이션 1. Shared Memory : 공유 메모리 - 프로세스 A와 ..
-
[안드로이드 - 코틀린] Timer 사용 방법Coding/Android 2019. 6. 27. 20:44
Kotlin에서는 일정한 시간을 주기로 반복하는 동작을 수행할 때는 timer 기능을 사용합니다. 안드로이드에서는 메인 UI를 조작하는 메인 스레드와 보이지 않는 곳에서 작업을 처리하는 워커 스레드가 존재합니다. timer 기능은 워커 스레드에서 동작하는 코드입니다. timer(period = 1000) // 1000 밀리초마다 수행 { // 워커쓰레드 작성 } 중요한 점은 워커 스레드에서는 UI를 조작할 수 없다는 것입니다. 만약 timer 기능 안에 작업한 쓰레드 안에 setText() 등등의 메인UI를 조작하는 기능을 넣는다면 컴파일 오류가 발생할 것입니다. 만약 워커 스레드에서 UI를 조작하고 싶다면 runOnUiThread() 메소드를 사용해야 합니다. timer(peroid = 1000) { ..