Presentation is loading. Please wait.

Presentation is loading. Please wait.

Xx.

Similar presentations


Presentation on theme: "Xx."— Presentation transcript:

1 xx

2

3

4 윈도우 운영체제 윈도우 응용 프로그램 Win32 API Device Driver

5 메인보드 CPU 코어 멀티 CPU 멀티 코어

6 CPU 운영체제 스케줄러 프로세스 A 프로세스 B 프로세스 C 프로세스 D

7 A.EXE 불가능 B.EXE C.DLL E.DLL D.DLL F.DLL EXE로부터 사용되는 DLL
DLL로부터 사용되는 DLL

8 컴파일러 링커 A.exe 소스코드 파일 A A.obj 소스코드 파일 B B.obj 소스코드 파일 C C.obj 소스코드 파일 D D.obj 컴파일 링크

9 공통 파일 포맷 공통 중간 언어 윈도우용 VM 컴파일러 개발자 소스코드 void Main() { } 리눅스용 VM

10 EXE 파일 C# 소스 코드 빌드 중간 언어 (IL Code) CLR 로더 실행 컴파일러에 의해 삽입된 CLR 로더 코드가 실행되고, CLR 로드 후, 사용자의 중간 언어 코드를 실행

11 CTS CLS C# VB.NET

12 어셈블리 모듈 C 매니페스트 모듈 A 모듈 B 메타데이터

13 Common Language Infrastructure
csc.exe 컴파일러 vbc.exe 컴파일러 fsc.exe 컴파일러 C# 소스코드 VB.NET 소스코드 F# 소스코드 Common Language Infrastructure Common Intermediate Language Common Language Runtime (Windows) 닷넷 언어는 각 소스코드를 컴파일해 플랫폼 독립적인 공통 중간 언어(CIL)로 변환 CIL 결과물을 각 플랫폼에 구현된 CLI 구현체가 번역해 실행 Mono (Linux)

14 Common Language Runtime
Windows Win32 API COM+ Console 응용 프로그램 ASP.NET 웹 응용 프로그램 Windows 응용 프로그램 IIS Base Class Library Common Language Runtime VB.NET, C#, C++/CLI, F#, ……

15 System.Web System.Windows.Forms System.Drawing System.Data System.XML
Globalization Diagnostics Configuration Collections Resources Reflection Net IO CodeDom Media Service Process Security Runtime Serialization Remoting Interop Services System.Data ODBC OLEDB SQL Types SQL System.XML XPath XSLT System.Web Caching Session State Services Protocols Discovery Description UI Web Controls HTML Controls System.Drawing System.Windows.Forms Imaging Drawing2D Text Printing Message Box Form List Control Button

16 Common Infrastructure
Compilers .NET Framework Base Class Library WPF Windows Forms .NET Core Languages Runtime components ASP.NET Core Library UWP ASP.NET Core 기반 라이브러리 앱 유형

17 Common Infrastructure
Compilers .NET Framework 비-표준 라이브러리 WPF Windows Forms .NET Core Languages Runtime components ASP.NET UWP ASP.NET Core 앱 유형 .NET Standard Library 기반 라이브러리

18 int n = 5; 4바이트 할당 5 메모리 저장소 이름 int n = 5; 5 10 메모리 n = 10; (변수의 값 변경)

19 int n = 5; 4바이트 할당 5 메모리 저장소 이름 스택 영역 int product = 500; 4바이트 할당 500 메모리

20 0x2000 string text = “Hello”; 스택 저장소 이름 스택 영역 힙 영역 0x0000 메모리 Hello

21 0x0000 string text; 메모리 null 0x2000 스택 저장소 이름 스택 영역

22 0x2000 int n1; string txt1; 5 0x1600 int n2; 스택 영역 C# 힙 영역 0x1200
메모리 0x0400 0x2000 int n1; 5 string txt2; int n2; 스택 영역 힙 영역 0x1600 0x1200

23 0x0000 Book book1; 메모리 #1 0x2000 0x0400 Book book2; 다른 참조 값 0x4000 스택
메모리 #1 0x1600 0x2000 0x0400 Book book2; 다른 참조 값 0x4000 스택 메모리 #2

24 int [] products = new int[10];
메모리 4바이트로 10개의 공간을 할당 0x0030 0x0000 0x2000 [9] [8] [7] [6] [5] [4] [3] [2] [1] [0] 스택

25 int [] arr = new int[10]; int [,] arr = new int[3,10];

26 int [10] int [9] int [8] int [3] int [5] arr[0][8] arr[0][7] arr[0][6]

27 int i = 2; while (true) { int j = 1; Console.WriteLine(i + " * " + j + " = " + (i * j)); if (++j > 9) break; } if (++i > 9)

28 N = 1,Sum = 0 거짓 N = N + 1 Print Sum 참 Sum = Sum + N N < 1,000
3 또는 5의 배수 Sum = Sum + N Print Sum

29 허클베리 핀의 모험 걸리버 여행기 이상한 나라의 앨리스

30 short var; 타입의 실체화된 객체 타입

31 Book 타입의 속성값을 담을 수 있는 메모리 할당
0x0000 Book gulliver = new Book(); Book 타입의 속성값을 담을 수 있는 메모리 할당 메모리 0x1400 0x2000

32 int result = m.f( 5 ); public int f(int x) { return x * x; }

33 Notebook Computer Desktop Netbook object DeviceManager

34 - bool - sbyte, byte - short, ushort - int, uint - long, ulong float, double decimal char System.ValueType class로 정의하는 타입들… object string enum, struct로 정의하는 타입들… 값 형식 참조 형식 System.Array 코드에 정의된 모든 배열

35 Circle o = new Circle();
double piValue = o.Pi; o.Pi = ; public double Pi { get { return pi; } set { pi = value; } }

36 정수 short -32,768 ~ +32,767 int -2,147,483,648 ~ +2,147,483,647

37 암시적 형변환 명시적 형변환 Computer Notebook 속성 행위 powerOn Boot Shutdown Reset 속성
fingerScan HasFingerScanDevice CloseLid

38 string text = “Hello”; … H 메모리 0x1400 0x2000 0x0000

39 0x0000 홍길동 메모리 _name: 0x1400 0x2000 0x0800 홍길순 2 0x1400 CountOfInstance Person 타입 person1 인스턴스 person2 인스턴스 _name: 0x0800

40 class Target { public void Do(Source obj) Console.WriteLine(obj.GetResult()); } class Source public int GetResult() return 10; public void Test() Target target = new Target(); target.Do(this);

41 int Clean (object arg);
int FuncDelegate (object arg); delegate int FuncDelegate (object arg); 대상 메서드의 반환값과 인자를 분리하고, 식별자만 바꾼다. 그 상태에서 delegate 예약어를 추가한다.

42 0x0000 Point pt1; 6 12 메모리 0x2000 0x0400 Vector v1; 5 10 Point pt2 = pt1; Vector v2 = v1; 0x1200 0x1600 스택

43 Vector v1; 5 10 메모리 0x0000 0x2000 Change(ref Vector vt) 0x1600 스택

44 0x0000 Point pt1; 5 10 메모리 0x2000 Change(ref Point pt) 0x0400 스택

45 0x2000 Point pt1; 스택 6 12 힙 Change1(Point pt)
메모리 0x2000 Change1(Point pt) null 6 12 pt = new Point(); pt.X = 6; pt.Y = 12; 0x400 스택

46 0x0000 Point pt1 = null; 메모리 0x2000 Change2(ref Point pt) Point pt1;
7 14 0x0400 pt = new Point(); pt.X = 7; pt.Y = 14; 스택

47 System.IndexOutOfRangeException
System.SystemException System.NullReferenceException …그 밖에 CLR을 통해 발생하는 모든 예외… System.Exception System.ApplicationException …응용 프로그램 개발자가 정의하는 예외…

48 5 6 void Main(string [] args) { int result = Sum(5, 6); 0xFFFFFFFF … }
메모리 0xFFFFFFFF 5 Main을 실행하는 스레드에 할당된 스택 6 int Sum( int v1, int v2 ) { int v3 = v1 + v2; return v3; Sum 메서드 호출 후 실행될 주소

49 5 6 0xFFFFFFFF Main을 실행하는 스레드에 할당된 스택 0x00000000 메모리 v3 용 4바이트
Sum 메서드 호출 후 실행될 주소 v3 용 4바이트

50 0세대 위치 a 0세대

51 a b c d e f g 0세대 a b c f g 0세대 1세대

52 a b c f g h i j k 0세대 1세대 a b c f g h i 0세대 1세대 2세대

53 a b c 0세대 1세대 2세대 20MB 40MB 40MB(Free) Free 40MB 20MB 40MB

54 i 관리 힙 종료 큐 i 관리 힙 종료 큐 Freachable 큐

55 i 관리 힙 종료 큐 Freachable 큐

56 string txt = “Hello {0}: {1}”;
string output = string.Format(txt, “World”, “Anderson”); string txt = “{0,-10} * {1} == {2,10}”; string output = string.Format(txt, 5, 6, 5 * 6); * 6 == 10개의 공백 - 좌측정렬 10개의 공백 - 우측정렬

57 0x0000 string txt; 메모리 #1 0x2000 0x0400 string lwrText; 0x4000 스택 힙
hello world 메모리 #1 0x1600 0x2000 0x0400 string lwrText; Hello World 0x4000 스택 메모리 #2

58 검색시간 컬렉션 크기 O(N) O(1)

59 1 Push 1 Push 5 5 Push 3 3 Pop Push 7 7

60 1 5 3 7 Enqueue 1 Enqueue 5 Enqueue 3 Dequeue Enqueue 7
Dequeue (empty)

61 “Hello World” 직렬화 byte [ ] 역직렬화 0x48 0x65 0x6c 0x6f 0x20 0x57 0x72

62 MemoryStream 의 내부 byte 배열
Position = 0 0x7D 0x00 Position = 2 0x7D 0x00 0x4C 0x36 0x19 Position = 6 0x7D 0x00 0x4C 0x36 0x19 Position = 0

63 0x7D 0x00 0x4C 0x36 0x19 Position = 6 Position = 2 2 바이트 읽음 4 바이트 읽음

64 스레드 1 실행 스레드 2 실행 CPU 스레드 1 스레드 2 운영체제 이전에 보관해 둔 CPU의 실행 정보를 복원
int func() { int a = 5; int b = 6; int sum = a + b; return sum; } void procedure() Console.WriteLine(“test”); Console.WriteLine(“is”);

65 Thread t = new Thread(threadFunc); t 스레드
주 스레드 Main 메서드 진입 Thread t = new Thread(threadFunc); t 스레드 t.Start(); 더 이상 실행될 명령어가 없으므로 스레드 종료 스레드 실행 Console.WriteLine(“......”); threadFunc 메서드 진입

66 Thread t = new Thread(threadFunc); t 스레드
주 스레드 Main 메서드 진입 Thread t = new Thread(threadFunc); t 스레드 t.Start(); 스레드 종료 스레드 실행 Console.WriteLine(“......”); Thread.Sleep(1000 * 60); threadFunc 메서드 진입 t.Join(); 스레드 대기 스레드 종료 알림 스레드 재개

67 CPU 1번 CPU 2번 CPU 3번 CPU 4번 스레드 A 실행 스레드 B 실행 스레드 C 실행 D 실행 E 실행 F 실행
G 실행 CPU 4번 H 실행 I 실행 J 실행 A 실행

68 Non-Signal Signal Set Reset

69 Read 스레드 디스크 스레드 대기 디스크 I/O 다음 코드 실행

70 BeginRead 스레드 디스크 디스크 I/O  다음 코드 실행 스레드 풀 스레드 readCompleted 실행

71 스레드 디스크 I/O 디스크 스레드 풀 스레드 스레드 대기 총 스레드 사용 시간 QueueUserWorkItem
 다음 코드 실행 스레드 디스크 I/O 디스크 스레드 풀 스레드 스레드 대기 총 스레드 사용 시간

72 스레드 WaitOne 대기 스레드 스레드 풀 Cumsum 다음 코드 실행 calc (Cumsum) BeginInvoke

73 BeginInvoke 스레드 스레드 풀 calcCompleted 다음 코드 실행 Cumsum

74 홍길동: 홍길순: 전화번호부 1 2 3 홍길순 홍길동

75 202.131.30.11 10.10.10.200 전화번호부 1 2 3 네이버 서버 사용자 PC 네트워크 어댑터 DNS 서버
전화번호부 1 2 3 네이버 서버 사용자 PC 네트워크 어댑터 DNS 서버

76 사내 PC Internet 라우터 네이버 웹 서버 192.168.0.2 (개인 IP) 202.131.30.11 (공용 IP)

77 Internet 네이버 웹 서버 (유무선) 액세스 포인트 192.168.1.2 (개인 IP)

78 DNS 서버 등록 데이터 www.testdomain.com   173.252.110.27 173.252.100.27
(공용 IP) 웹 서버 1 Internet (공용 IP) 웹 서버 2 DNS 서버 DNS 서버 등록 데이터  

79 TCP/IP 사용 클라이언트 A 서버 192.168.1.10 192.168.1.11 클라이언트 B
xx TCP/IP 사용 클라이언트 B 과 통신 과 통신 을 점유하는 프로그램 을 점유하는 프로그램

80 TCP/IP 사용 클라이언트 A 서버 192.168.1.10 클라이언트 B 80번 포트를 점유하는 프로그램
xx TCP/IP 사용 클라이언트 B 의 80번 포트와 통신 의 90번 포트와 통신 80번 포트를 점유하는 프로그램 90번 포트를 점유하는 프로그램

81 사용자 PC 네트워크 어댑터 A 네트워크 어댑터 B IP TCP UDP

82 사용자1 네트워크 어댑터 A ( ) 네트워크 어댑터 B ( ) 사용자2 사용자3

83 UDP 서버 소켓 UDP 클라이언트 소켓 SendTo/Receive serverFunc - 스레드 clientFunc

84 new Socket(…); Bind Listen Accept Close 2) IP+Port 와 연결 3) 클라이언트로부터 연결을 받을 수 있도록 소켓 상태 전환 4) Listen 이후 연결된 클라이언트를 하나 꺼내와서 반환 5) 서버 소켓 종료 1) TCP 소켓 생성

85 H e l o char(10) varchar(10)

86 reader = cmd.ExceuteReader();
Anderson 2 Jason Mark 1 1행 2행 3행 reader = cmd.ExceuteReader(); true = reader.Read() false = reader.Read()

87 UI 계층 데이터 접근 계층 class MemberInfoDAC 데이터베이스 응용 프로그램 class BlogDAC
데이터 컨테이너 class Blog

88 UI 계층 데이터 접근 계층 class MemberInfoDAC 데이터베이스 응용 프로그램 class BlogDAC
DataSet 데이터 컨테이너

89 EXE 프로세스(Process) n개의 추가 AppDomain AppDomain 어셈블리 A 어셈블리 B n개의 어셈블리…

90 어셈블리(Assembly) n개의 모듈(Module) n개의 타입(클래스) n개의 메서드 n개의 필드 n개의 프로퍼티 n개의 이벤트

91 0x0000 5 메모리 0x2000 스택 영역 힙 영역 0x0400 박싱(Boxing) Add( 0x0400 );

92 public class NewStack<T> { T [] _list;
public void Push(T item) { …… } public T Pop() { …… } } NewStack<int> t = new …; NewStack<double> t = new …; public class NewStack<int> int [] _list; public void Push(int item) { …… } public int Pop() { …… } public class NewStack<double> double [] _list; public void Push(double item) { …… } public double Pop() { …… }

93 3 ForEach( (elem) => { … } ); 1 4 5 2 Action<T> 리스트의 요소를 하나씩 차례대로 Action<T>에 전달

94 + 2항 표현식(Binary Expression) a b 인자 표현식(Parameter Expression) Left Right Expression

95 from person in people select person; foreach (var person in people) yield return person;

96 join language in languages
Tom 63 Korea Winnie 40 Tibet Anders 47 Sudan Hans 25 Eureka 32 Hawk 15 from person in people join language in languages on person.Name equals language.Name select new { }; Anders Delphi C# Tom Borland C++ Hans Visual C++ Winnie R

97 LINQ(Language-Integrated Query)
C# VB.NET … 기타 .NET 언어 LINQ(Language-Integrated Query) IEnumerable LINQ to Objects LINQ 제공자 LINQ to DataSet LINQ to SQL LINQ to Entities LINQ to XML 배열, List<T>, …… 관계형 DB XML

98 byte[] buf = new byte[fs.Length];
fs.Read(buf, 0, buf.Length); string txt = Encoding.UTF8.GetString(buf); Console.WriteLine(txt); 동기식 코드 비동기식 코드로 변환 fs.BeginRead(…, readCompleted, …);

99 스레드 디스크 디스크 I/O 스레드 풀 스레드 ReadAsync
 (곧바로 메서드 반환)  Console.ReadLine 실행 스레드 풀 스레드 GetString 메서드  WriteLine 메서드 C# 컴파일러가 분리해낸 코드

100 int a; 6 메모리 5 0x0000 0x2000 int b; 0x1600 0x1200 스택 영역 스택 영역 int a; 5 메모리 0x0000 0x2000 int b; 0x1600 0x1200

101 스택 영역 int a; 5 메모리 0x0000 0x2000 int b; 0x1600 0x1200

102 0x2000 int n1; string txt1; 5 0x1600 int n2; 스택 영역 C# 힙 영역 0x1200
메모리 0x0400 0x2000 int n1; 5 string txt2; int n2; 스택 영역 힙 영역 0x1600 0x1200

103 마우스 클릭 윈도우 운영체제가 마우스 눌림을 윈도우에 전달 Form1.Click 이벤트 발생

104 부모 윈도우 자식 윈도우 + = 2개의 윈도우

105 윈도우 요소(Element) 메모리 영역을 메모리에 그린다. 메모리상의 그림이 합쳐져서 하나의 윈도우 출력이 완성된다.

106 INotifyPropertyChanged를 구현한 인스턴스
using System; using System.ComponentModel; using System.Windows; using System.Windows.Threading; namespace WpfApplication1 { public partial class MainWindow : Window, INotifyPropertyChanged DispatcherTimer _timer; string _time; public string Time get { return _time; } set _time = value; PropertyChanged(this, new PropertyChangedEventArgs("Time")); } public MainWindow() InitializeComponent(); // …… [생략] …… void _timer_Tick(object sender, EventArgs e) this.Time = DateTime.Now.ToLongTimeString(); public event PropertyChangedEventHandler PropertyChanged; <Window x:Class="WpfApplication1.MainWindow" xmlns=“……" xmlns:x=“……" x:Name="thisWindow“ ……> <Grid> <Label DataContext="{Binding ElementName=thisWindow}" Content="{Binding Path=Time}" ……></Label> </Grid> </Window> INotifyPropertyChanged를 구현한 인스턴스 Time 속성을 가진 인스턴스 Content 에 반영 이벤트 발생

107 _processInstaller.Account = ServiceAccount.LocalService;
_serviceInstaller.ServiceName = “MyEchoServer”; _serviceInstaller.Description = “My First Service Program”; _serviceInstaller.StartType = ServiceStartMode.Automatic;

108 웹 서버 (w3wp.exe) CGI 실행 파일 ([……].exe) 표준 입력을 통해 인자 값 전달 표준 출력을 통해 HTML 텍스트 반환

109

110 사용자 컴퓨터 myapp.exe RAM 상태 유지

111 사용자 컴퓨터 웹 브라우저 서버 컴퓨터 웹 서버 HTTP 통신 ASPX 클래스 RAM

112 전송 버튼을 누르면

113 전송 버튼을 누르면

114 PC 윈도우 폰 파워포인트 PPTShow ShowController

115 PC 윈도우 폰 파워포인트 PPTShow ShowController HTTP 통신 5022번 포트 대기 오피스 자동화 기술을 이용해 제어

116 …… 컴퓨터 IP …… 5022 Open …… 선택된 PPT 파일 경로 …… Port Label 컨트롤 Button 컨트롤

117 …… 컴퓨터 IP 목록 …… 5022 Open …… 선택된 PPT 파일 경로 …… Port Label 컨트롤 Button 컨트롤 Not Loaded 목록 컨트롤

118 …… 컴퓨터 IP …… 5022 Connect IP TextBlock 컨트롤 Button 컨트롤 Port TextBox 컨트롤

119 현재 슬라이드 이미지 TextBlock 컨트롤 Image 컨트롤 Panorama 컨트롤 슬라이드의 메모 내용

120 현재 슬라이드 이미지 Image 컨트롤 Panorama 컨트롤 슬라이드의 메모 내용 TextBlock 컨트롤
전체 슬라이드의 이미지 목록 ListBox 컨트롤 + Image 컨트롤

121 닷넷 응용 프로그램 COM 개체 RCW 관리되지 않는(Unmanaged) 영역 관리(Managed) 영역

122 PC 윈도우 폰 파워포인트 PPTShow ShowController HTTP 통신 5022번 포트 대기 오피스 자동화 기술을 이용해 제어

123 닷넷 응용 프로그램 P/Invoke Microsoft.Win32 Win32 API


Download ppt "Xx."

Similar presentations


Ads by Google