전체 글

전체 글

    [운영체제] System Call(시스템콜)을 파보자!

    [운영체제] System Call(시스템콜)을 파보자!

    📣 해당 포스트는 운영체제 공룡책과 고건 교수님의 OLC 강의 등을 참고하여 작성되었습니다. 시스템콜을 한마디로 정리하면 커널에 접근하기 위한 인터페이스입니다. 하지만 시스템콜이 이 한마디로 이해되셨다면 시스템콜을 검색하지 않으셨겠죠? 한단계씩 자세히 풀어나가보겠습니다! 1. 시스템콜이 생긴 이유 먼저 시스템콜이 무엇인지 알아보기 전에 시스템콜은 왜 생기게 되었는지 한번 알아볼게요! 개인용 PC로 시작된 Window와는 다르게 Linux는 하나의 컴퓨터를 여러명의 사용자들이 사용하기 위한 OS로 만들어졌습니다. 여러명의 사용자이면서 여러개의 프로그램이라고도 할 수 있겠죠? 사용자들은 결국 프로그램을 실행하는 사람이니깐요ㅎㅎ 이를 Multi User System 이라고 합니다!! 반면에 window는 Si..

    [ARC] 성능을 위해 unowned를 꼭 써야할까?

    [ARC] 성능을 위해 unowned를 꼭 써야할까?

    (재미로 봐주세요..ㅎㅎ) unowned를 쓰는 것은 불편합니다. 왜냐면 unowned로 참조한 친구가 사라져버리면 그 포인터가 가리키는 값이 댕글링 포인터가 되어버려서 터질 수도 있기 때문이에요. 사실 Unowned로 선언하면 옵셔널 체이닝을 안해도 되는 간편함이 있긴 하지만, 차라리 옵셔널 체이닝을 하더라도 터지지 않는 앱을 위해 상황 하나 하나를 다 들여다보는게 더 귀찮더라고요. 그래서 전 그냥 weak를 쓰지만, 쓸 때마다 마음에 부채가 생겼습니다...;; 내가 엄청난 성능적 죄악을 저지르고 있는 것이 아닐까? 애플이 unowned를 괜히 만들지는 않았을텐데... 대충 이런 느낌... 그래서!!! 과연 얼마나 성능에 영향을 미치는지 테스트를 해봤습니다. 테스트는 할당과 해제를 많은 수로 반복하면서..

    [ARC] Lazy 변수 클로저에서 Unowned 캡처가 항상 안전할까?

    [ARC] Lazy 변수 클로저에서 Unowned 캡처가 항상 안전할까?

    정말 오랜만에 글을 쓰네요!! 열심히 논 건 아니고 운영체제 공룡책을 공부하는 폐관수련을 하느라 다른 걸 거의 하지 못했는데, 공부 할 수록 점점 "CS는 무조건 깊게 공부하자!"라고 외치는 개발자가 되어가는 것 같아요. (점점 올드해지는 느낌) 곧 OS에 대한 시리즈와 클린아키텍처에 대한 시리즈도 쏟아져 올라갈 예정이니 많은 관심 부탁드립니당~ 최근에 어떤 글을 보았는데, Lazy변수에서 self에 접근하는 경우, self는 값이 있음을 가정하므로 [weak self] 뿐만 아니라 [unowned self]를 사용하여 self에 대해 접근할 수 있다고 하더라고요! 근데 이 말을 보는데 계속 의문이 들더라고요. 과연 안전할까? 물론 시작할 때 있다는 건 보장이 되는데, 실행하는 중간에도 있다는 건 어떻게..

    [Concurrency] Semaphore로 비동기적 이벤트를 동기적으로 발생시키기

    [Concurrency] Semaphore로 비동기적 이벤트를 동기적으로 발생시키기

    운영체제를 보다가 오랜만에 Semaphore를 만났는데 예전에 C로 철학자 문제를 만들어본 적은 있지만 Swift에서는 아직 제대로 사용해본 적이 없더라고요! "이걸로 뭔가 간단한걸 만들어보고 싶은데 뭘 만들지?" 고민하다가 정말 의미없는 무언가를 만들어내었습니다! 바로.....!! 버튼을 한번 누를 때마다 2초후에 값을 증가시키는 앱이에요! 버튼을 여러번 클릭한 경우, 단순히 2초 후에 한번에 올려주는 것이 아니라 2초마다 하나씩 하나씩 올려주는 작동을 합니다ㅎㅎ 영상에서 아래쪽은 버튼 누른 횟수가 증가하고, 위쪽은 전달된 이벤트가 2초의 텀을 두고 동기적으로 실행되는데요, 당연히 User Interaction등이 막히는 일이 있어서는 안되겠죠?? 어떻게 만들지 한번 머릿속으로 구상해보세요!! 버튼을 ..

    [ARC] 약한참조(Weak, Unowned)에 대해서

    [ARC] 약한참조(Weak, Unowned)에 대해서

    인스턴스가 메모리에서 해제되기 위해서는 reference count가 0이 되어야하는데, 0이 되지 않는다면 메모리에 계속 남겨져서 memory leak 이 일어나게 됩니다. 어떤 경우에서 memeory leak이 일어나게 되는 걸까요? 대표적인 예시로 순환참조가 있습니다. 1. 순환 참조 상황 이해하기 먼저 순환참조는 두 개 이상의 객체가 서로 강하게 참조하는 상태를 의미합니다. 사실 순환참조는 피해야 하는 안좋은 방식입니다! 단순히 memory leak이 어떻게 일어나는지 보여주는 예시일 뿐이지, 우리가 객체를 이렇게 구성하면 안됩니다. 순환참조를 사용하게 되면 의존성에 문제가 생기게 됩니다. 컴포넌트 간의 경계가 명확해야 하는데 그러지 못하게 되고 하나가 변경되게 되면 다른 객체가 변경되는 등의 문..

    [Swift] 지정한 For-Loop 탈출하기

    Swift로 알고리즘을 풀어보면서 파이썬만큼은 아니지만 편리한 도구들을 많이 마련해 놓았다는 생각이 드는데요. 오늘은 그 중에서 지정한 For-Loop 를 한번에 break 하는 방법을 소개드리려고 합니다 :) 사실 이런 것들은 있는 줄 몰라서 못쓰는 것들이 대부분이잖아요? 이런 도구들을 틈틈히 정리해보려고 합니다! 그냥 아무런 쓸 때 없는 3중 For-Loop를 만들어볼게요. for i in 1...10 { // 첫번째 Loop for j in 1...10 { // 두번째 Loop for k in 1...10 { // 세번째 Loop print(i, j, k) } } } 여기서 만약에 특정 조건일 때 두번째 Loop에서 break 하고 싶으면 어떻게 해야 할까요? 여기서는 i, j, k가 모두 같을 때..

    [Swift] Stride 함수를 사용하자

    알고리즘을 풀고 다른 사람들의 답을 훑어보던 도중 stride라는 함수를 발견했는데, 엄청 편리한 것 같아서 정리해볼게요ㅎㅎ 먼저 stride 함수에 대해서 간단히 말하자면 For-Loop 문 (for문)에서 컨트롤 하는 index에 특정한 범위를 주는 역할을 해요. for 문을 사용할 때, index로 무언갈 하고 싶은 적이 많을텐데, 무조건 하나씩 올라가야 하는 문제 때문에 불편한 기억이 많으실텐데요. stride를 쓰면, 시작점과 끝 지점, 얼마나 띄어서 세고 싶은지, 양수 방향으로 세고 싶은지 등을 컨트롤 할 수 있어요! 간단하게 예시를 한번 들어볼게요! 다음 코드는 2부터 5까지의 배수 중 10 이하를 출력하는 코드에요 for outside_idx in 2...5 { for inside_idx ..

    [MVC] iOS의 MVC 아키텍처에 대해서

    [MVC] iOS의 MVC 아키텍처에 대해서

    Apple Developer Academy @ POSTECH에서 매크로 프로젝트 팀원들에게 설명하는 세션을 위해 MVC 아키텍처를 정리해보았습니다. 이곳에 MVC 아키텍처를 적용한 예시코드가 있으니, 이 코드를 보면서 이어질 설명을 읽으시면 쉬운 MVC 아키텍처를 통해 아키텍처가 무엇인지 이해하시는 것에 꽤 도움이 많이 되실 거라고 생각해요. GitHub - feldblume5263/iOS_Session: iOS 세션 준비를 위해 만든 repository입니다. iOS 세션 준비를 위해 만든 repository입니다. Contribute to feldblume5263/iOS_Session development by creating an account on GitHub. github.com 1. MVC 아..

    [Apple Developer Academy @ POSTECH] Mini Challenge 3 후기

    [Apple Developer Academy @ POSTECH] Mini Challenge 3 후기

    아니... 정말 쉴시간이 하나도 없이 달렸다. MC2 끝난지 얼마나 됐다고 벌써 MC3가 끝났지?? 아카데미 사람들 다 나와 같은 생각하고 있는 것 같다. 챌린지가 왠지 프로젝트를 하는게 챌린지가 아니라, 쉬는 틈을 안줘서 챌린지인가 싶기도 하다. 어우... MC2가 끝나고 너무 지쳐있어서 이번에는 너무 좀 쉬어가면서 해야지, 싶었는데 결국에는 내가 좋아하는 막판 스퍼트를 꽤 내게 됐던 것 같다. 그리고 우리 팀 최종 발표! 너무 좋았다. 우리팀의 천재 디자이너와 곤룡포를 입은 천재 개발자가 발표를 했는데 정말 성공적으로 끝났다. 옷 맞춰 입은것만 봐도 느낄 수 있다. 합이 정말 정말 잘 맞는 팀이었다. 너무 웃기기도 해서 같이 있으면 내내 웃다가 배가 아팠다. MC3 때 했던 프로젝트는 이곳에서 볼 수..