본문 바로가기

Contents168

[운영체제] 컨텍스트 스위칭(context switching) Context Switching context : 한국어로 "문맥"이라는 뜻이다. 프로세스를 중단했다가 다시 실행하려고 할 때 복원할 수 있는 충분한 정보 context switching : 실행중인 프로세스 교체 컨텍스트 스위칭을 하기 위해 고려해야할 세 가지가 있다. 어떻게 현재 프로세스 상태를 저장할 것인가? 어떻게 현재 프로세스를 중단할 것인가? 어떻게 이전 프로세스를 복원할 것인가? 각 프로세스는 스택을 가지고 있고, 운영체제에서는 컨텍스트 스위칭을 하기 위해 이 스택을 이용한다. 스택은 지역변수, 함수 arguments 등을 저장하는 역할을 한다. 함수가 끝났을 때 돌아갈 주소도 스택에 저장한다. x86 아키텍처에서는 스택이 밑으로 자라난다. (리틀 엔디안) EIP : Instruction P.. 2021. 4. 18.
[운영체제] 프로세스(process) 프로그램 : 디스크에 저장되어 있는 프로그램 프로세스 : 현재 실행중인 프로그램 로더 : 프로그램을 메모리에 적재하는 역할 커널 : 프로세스의 생성부터 종료까지 (PCB)관리 PCB(Process Control Block) : 프로세스의 정보를 저장하는 자료구조 상태(state) : 프로세스가 중단되었다가 다시 실행될 때, 원래 상태를 복원할 수 있는 충분한 정보 프로그램과 프로세스의 차이는, 프로그램은 디스크에 저장되어 있는 것이고, 프로세스는 프로그램을(더블 클릭 등으로) 실행했을 때 생기는 것이다. 동일한 프로그램을 두 번 실행시킬 수도 있다. 프로세스 상태 struct task_struct { pid t_pid; long state; unsigned int time_slice struct task.. 2021. 4. 18.
[안드로이드 #3] RecyclerView (상) 이번 강의에 사용된 이미지용 xml 이번에는 RecyclerView 하나만 다뤄보도록 하겠습니다. RecyclerView와 비슷한 역할을 하는 View로 ListView가 있습니다. 하지만 ListView는 커스터마이징이 불가능하고 이미 만들어져 있는 것만 사용할 수 있습니다. ListView는 안 예뻐요. 그 밖에도 뷰를 재사용하는 RecyclerView 의 특징이 있기 때문에 대부분 RecyclerView를 이용한다고 생각하시면 됩니다. ListView의 이름에서 예상하셨겠지만 ListView나 RecyclerView는 같은 형식의 데이터 여러 개를 출력시켜주는 View입니다. 기존의 코드에서 덧붙이는 것보다 새로운 화면에서 만드는 것이 좋아보입니다. 우선 새 모듈을 하나 만들어 주세요. 액티비티는 .. 2021. 3. 31.
thread safe vs thread unsafe SW마에스트로 면접 준비하면서 찾아본 내용으로 java에서 ArrayList 와 Vector 의 차이가 있다. 나는 java에서 ArrayList만 써봤고 vector는 C++ 컨테이너로 사용해봤다. java의 vector는 안 써봤지만 C++에서의 개념을 생각해 보면 ArrayList와 Vector의 사용 방법은 동일할 것 같았다. 그럼 무슨 차이가 있는걸까? 결론부터 말하자면 Vector는 thread safe 하고 ArrayList는 thread unsafe 하다. 속도는 당연히 ArrayList가 빠르기 때문에 스레드 프로그래밍을 하지 않는다면 ArrayList를 사용하는 것이 바람직해 보인다. 근데 스레드라는 게 명시적으로 thread를 만들 수도 있지만 이벤트나 네트워크, 데이터베이스 등을 쓰.. 2021. 3. 30.
C언어 전역변수 초기화 알고리즘 문제 풀 때 편의상 전역변수를 많이 사용한다. 전역 변수로 선언하면 선언 후 초기화 하지 않아도 자동으로 0으로 초기화되는 것은 알고 있었다. 사실 이거는 C언어 문법이 주제라기 보다 시스템, 운영체제 얘기에 가깝다. int a; int b = 0; 그런데 위 두 줄의 코드가 다르게 동작한다는 것은 모르고 있었다. 변수는 기본적으로 .data 섹션에 저장되는데, 초기화 되지 않은 전역변수는 .bss 섹션에 저장된다. 명시적으로 초기화 값을 주는 게 더 좋은지 나쁜지가 궁금하지만 알고리즘 문제에서 AC를 받고 못 받을 정도의 차이는 아니라서 넘어가기로 했다. 문자열, 동적 할당 : heap 초기화 된 전역 변수 : .data 초기화 되지 않은 전역 변수 : .bss 프로그램 코드 : .text 함.. 2021. 3. 30.
면접을 봤고, 면접을 봤다. (SW마에스트로 12기 면접/21.04.02. 수정) 하나는 내가 면접자이고, 하나는 내가 면접관이었다. 정신 없는 일주일이 지나갔다. 교내 앱센터에서 안드로이트 파트장(맨날 댓글다는 감자도스 센터장이 시켰다.)을 맡게 되었기 때문에 신입 기수 면접관으로 들어가게 되었다. 안드로이드는 다 들어갔고 다른 파트 지원자들도 궁금해서 몇 번 들어가기도 했다. 그것까지 한 30명 정도 본 것 같다. 금요일은 내가 대면 면접을 보러가야 하기 때문에 면접자들의 일정은 월~목요일로 잡았다. 개인에게 주어진 시간은 20분이다. SW마에스트로 면접은 앱센터 면접보다 물어볼 것이 많았음에도 불구하고 개인에게 12분이라는 면접 시간이 주어진다. 그래서 앱센터 면접 20분이 과연 효율적인 면접 시간인가 의문을 갖게 되었다. 다음 기수에는 서류 비중을 늘리고 면접 비중을 줄이는 것.. 2021. 3. 30.
SW마에스트로 2차 코딩테스트 악 ㅏ악 아아아아아아악 1차는 알고리즘 6 + 웹 1 + SQL 1 문제, 2차는 알고리즘 3 + 웹 1 + SQL 1 문제였다. 2차는 1차와는 다르게 구글링이 불가능했다. 그리고 나만 그런 건지는 모르겠는데 코테 시작하고 1시간정도부터 약 30분간 서버 연결이 불안정해서 글자가 두 글자씩 작성되고 막 나를 방해했다... 1차는 5문제 제출 후 합격, 2차는 4문제 제출했다. 하지만 2차 문제 난이도가 1차보다 쉬웠고, 나는 디버깅에만 1시간 넘게 사용해서 웹 문제를 아예 풀지 못 했다. SQL 문제도 3분 남기고 풀어서 SQL이나 다른 문제들 TC넣어볼 시간이 없었다. 그래서 1차 때는 좀 아쉽긴 했어도 붙지 않을까? 하는 생각이었는데 이번엔 진짜 떨어질 지도 모르겠다. 2차 문제가 1차보다 쉬웠다는.. 2021. 3. 13.
컴퓨터공학과 대외 활동 (21.07.24.) 21. 07. 24. 내용 추가하는 김에 글도 조금 바꿨다. 대외 활동에 대해 간단히 설명하자면 두 가지 분류 방법으로 나눌 수 있다. 누가 주관하는가? 어떤 활동인가? 주체는 정부, 기업, 일반인으로 나눌 수 있다. 관련 정부 부서로는 과학기술정보통신부가 있다. 기업에서는 삼성, 네이버, 우아한형제들이 교육 프로그램을 진행하고 대회까지 포함하면 더 많은 기업이 포함된다. 종류로는 교육 프로그램, 공모전, 연합동아리, 대회 등이 있다. 1. 교육 프로그램 대기업 채용시 자사에서 운영중인 교육 프로그램에서 채용이 발생하는 경우가 많아지고, 교육 프로그램의 인지도 높아지고 있는 것 같다. 보통 학업과 병행이 불가능하거나 힘들다. 1) SW 마에스트로 : 과학기술정보통신부 www.swmaestro.org/sw.. 2021. 3. 3.
[안드로이드 #2] 이벤트 목차 이벤트 Toast Message Activity 생명주기 Intent 지난번 과제는 어떠셨나요? 과제에 대한 피드백은 스터디에서 하도록 하겠습니다. 오늘은 제목을 이벤트라고 지었지만 이벤트를 포함한 여러 개념들을 공부할 예정입니다. - 이벤트 뷰를 클릭했을 때의 이벤트를 지정할 수 있는 방법은 크게 두 가지가 있습니다. 하나는 kotlin코드(혹은 java)에서 지정하는 방법이고 다른 하나는 xml코드에서 지정하는 방법입니다. 1) xml에서 지정 먼저 xml에서 지정하는 방법을 살펴보도록 하겠습니다. xml에서는 onClick 이라는 속성에 클릭 이벤트를 구현한 함수 이름을 넣어주면 됩니다. 여기서 onClick 함수는 매개변수로 View 객체를 받아야 합니다. 예시 코드는 button Click.. 2021. 3. 3.