전체 글
[Architecture] MVC 패턴
[Architecture] MVC 패턴
2022.10.13MVC란? MVC란 화면(visual components)으로 인터페이스가 구성되어있는 소프트웨어에서 사용되는 디자인 패턴으로 주요한 목적은 소프트웨어의 비즈니스 로직과 화면을 표현하는데 관련된 프리젠테이션 로직을 구분하는데에 있다. 같은 목적을 가진 패턴으로 MVVM, MVP, MVI등이 있는데 모두 그 기반은 MVC에 두고 있다. Apple MVC 먼저 애플의 공식 document에서 이야기하는 MVC 패턴에 대해 살펴보자. 개요 MVC 디자인 패턴은 어플리케이션을 3개의 역할을 가진 오브젝트로 나눈다. Model, View, Controller. MVC 패턴은 각 오브젝트의 역할 뿐만아니라 오브젝트들이 서로 소통하는 방식도 같이 정의한다. 3개의 각각의 오브젝트들은 추상적인 경계에 의해 분리되어있고..
[PS - 트리] LeetCode 104. Maximum Depth of Binary Tree
[PS - 트리] LeetCode 104. Maximum Depth of Binary Tree
2022.09.30https://leetcode.com/problems/maximum-depth-of-binary-tree/ Maximum Depth of Binary Tree - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com - 큐를 사용한 BFS로 구현 - 최초 Node가 nil인 경우 처리 - 한번 반복 될때마다 깊이를 +1 카운트 - 현재 큐의 길이(같은 레벨에 위치한 노드의 전체 개수)만큼 다시 추가해주는 작업 class Solution { func maxDepth(_ ..
[Swift Language Guide] String & Character
[Swift Language Guide] String & Character
2022.09.19String은 Character의 연속이다. String의 내용은 Character의 컬렉션을 비롯해 다양하게 접근이 가능하다. Swift의 String과 Character는 빠르고, Unicode에 순응하는 방식을 제공한다. 💡 String 타입은 Foundation 프레임워크의 NSString과 브릿지 되어있다. Foundation이 NSString에 정의된 메소드를 String타입에도 확장해 놓았기 때문에, Foundation을 import한다면 NSString으로 캐스팅 하지 않아도 해당 메소드들을 사용할 수 있다. / 참고: Bridging Between String and NSString String Literals 따옴표 사용 let someString = "Some string litera..
[Swift] COW(Copy-on-Write)
[Swift] COW(Copy-on-Write)
2022.08.24들어가며 Swift에서 값 타입과 참조 타입의 주요한 차이 중 하나는, 값 타입은 새로운 변수를 할당하거나 파라미터로 전달될 때 값 복사가 일어난다는 점이다. 다만, 이러한 복사 작업은 상당한 시간이 걸리므로 이런 작업을 최적화 하기 위한 기술이 바로 COW(Copy-on-Write)이다. "쓸 때 복사한다."라는 의미인데 COW가 어떤 방식으로 동작하는지, 또 Swift에서 어떤 타입에 구현되어있는지를 살펴본다. 실험 실험준비 아래와 같이 메모리 주소를 출력하는 함수를 정의하고 실험을 진행한다. UnsafeRawPointer는 Swift가 지원하는 포인터 타입 중 하나인데, 나중에 포스트를 통해 자세히 설명할 예정이다. 일단 객체의 메모리 주소를 나타내는 타입이라고 이해하자. func printAddr..
[운영체제](반효경) 8강. Deadlock
[운영체제](반효경) 8강. Deadlock
2022.08.09The Deadlock Problem DeadLock 일련의 프로세스들이 서로가 가진 자원을 기다리며 block된 상태 Resource(자원) 하드웨어, 소프트웨어 등을 포함하는 개념 ex) I/O Device, CPU cycle, memory space, semaphore 등 프로세스가 자원을 사용하는 절차(요청, 할당, 사용, 반납) Request, Allocate, Use, Release 데드락 예시 시스템에 2개의 테이프 드라이버가 있는데, 프로세스 P1과 P2가 각각 하나의 테이프 드라이버를 보유한 채 다른 하나를 기다리고 있을 때 Binary semaphores A and B Deadlock 발생의 4가지 조건 Mutual exclusion(상호 배제) 매 순간 하나의 프로세스 만이 자원을 사..
[운영체제](반효경) 7강. Process Synchronization
[운영체제](반효경) 7강. Process Synchronization
2022.08.09Process Synchronization 데이터의 접근 Race Condition 1) 공유 메모리를 사용하는 프로세스들 2) 커널 내부 데이터를 접근하는 루틴들 간(시스템콜) OS에서 언제 Race Condition이 발생하는가? 1. Kernel 수행 중 인터럽트 발생 시 inturrupt를 disable시켜서 해결. 순차적으로 하도록! 2. Process가 System call을 하여 Kernel mode로 수행중인데 context switch가 일어나는 경우 3. Multiprocessor에서 shared memory 내의 kernel data Process Synchronization 문제 공유데이터 shared data의 동시 접근 concurrent access는 데이터의 불일치 문제 in..
[운영체제](반효경) 6강. CPU Scheduling
[운영체제](반효경) 6강. CPU Scheduling
2022.08.09CPU Scheduling CPU and I/O Bursts in Program Execution CPU-burst Time의 분포 여러 종류의 job(process)들이 섞여있기 때문에 CPU 스케줄링이 필요하다. Interactive job에게 적절한 response 제공 요망 CPU와 I/O 장치 등 시스템 자원을 골고루 효율적으로 사용 프로세스의 특성 분류 I/O- bound process CPU를 잡고 계산하는 시간보다 I/O에 많은 시간이 필요한 job Many short CPU bursts CPU-bound process 계산 위주의 job Few very long CPU bursts CPU Scheduler & Dispatcher 운영체제의 특정 기능임 CPU Scheduler Ready ..
[운영체제](반효경) 5강. Process Management
[운영체제](반효경) 5강. Process Management
2022.08.09Process Management 프로세스 생성(Process Creation) Copy-on-write(COW) - write가 발생할때 Copy를 하겠다. 공유를 하다 자식의 내용이 수정되면 그때 부모의 Code Data Stack을 복사하겠다. 부모 프로세스가 자식 프로세스를 생성 프로세스의 트리(계층 구조) 형성 프로세스는 자원을 필요로 함 운영체제로부터 받는다. 부모와 공유한다 자원의 공유 공유하는게 좋으나 별개의 프로세스이기 때문에 독립적으로 가지고 있는게 원칙이다 부모와 자식이 모든 자원을 공유하는 모델 일부를 공유하는 모델 전혀 공유하지 않는 모델 수행(Execution) 부모와 자식은 공존하며 수행되는 모델 자식이 종료(terminate)될 때까지 부모가 기다리는(wait=blocked)..
[운영체제](반효경) 4강. Process(2)
[운영체제](반효경) 4강. Process(2)
2022.08.09Thread 💡 “A thread(or lightweight process) is a basic unit of CPU utilization” Thread의 구성 Program Counter Register Set Stack Space Thread가 동료 Thread와 공유하는 부분***(=Task)*** Code Section Data Section OS Section 전통적인 개념의 heavyweight process는 하나의 thread를 가지고 있는 task로 볼 수 있다. 다중 스레드로 구성된 태스크 구조에서는 하나의 서버 스레드가 blocked(wating) 상태인 동안에도 동일한 태스크 내의 다른 쓰레드가 실행(Running)되어 빠른 처리를 할 수 있다.(=비동기처리?) 동일한 일을 수행하는..
[운영체제](반효경) 4강. Process(1)
[운영체제](반효경) 4강. Process(1)
2022.08.09프로세스 프로세스의 개념 💡 “Process is a program in execution” - 프로세스는 실행중인 프로그램이다. 프로세스의 문맥(Context) CPU 수행상태를 나타내는 하드웨어 문맥 Program Counter 각종 Register 프로세스의 주소공간 code, data, stack 프로세스 관련 커널 자료 구조 PCB(Process Control Block) Kernel Stack 프로세스의 상태(Process State) *본 수업은 CPU가 1개인 컴퓨터를 기준으로 설명함 프로세스는 아래와 같은 상태가 번갈아가며 수행된다. Running CPU를 잡고 instruction을 수행중인 상태 Ready CPU를 기다리는 상태(메모리 등 다른조건을 모두 만족한) Bloacked(wa..