핀토스(Pintos) 프로젝트 1번째 과제 User Program Basic 소스코드 및 코드분석 보고서 (설계 프로젝트 수행 결과)
본 자료는 미리보기를 지원하지 않습니다.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204
  • 205
  • 206
  • 207
  • 208
  • 209
  • 210
  • 211
  • 212
  • 213
  • 214
  • 215
  • 216
  • 217
  • 218
  • 219
  • 220
  • 221
  • 222
  • 223
  • 224
  • 225
  • 226
  • 227
  • 228
  • 229
  • 230
  • 231
  • 232
  • 233
  • 234
  • 235
  • 236
  • 237
  • 238
  • 239
  • 240
  • 241
  • 242
  • 243
  • 244
  • 245
  • 246
  • 247
  • 248
  • 249
  • 250
  • 251
  • 252
  • 253
  • 254
  • 255
  • 256
  • 257
  • 258
  • 259
  • 260
  • 261
  • 262
  • 263
  • 264
  • 265
  • 266
  • 267
  • 268
  • 269
  • 270
  • 271
  • 272
  • 273
  • 274
  • 275
  • 276
  • 277
  • 278
  • 279
  • 280
  • 281
  • 282
  • 283
  • 284
  • 285
  • 286
  • 287
  • 288
  • 289
  • 290
  • 291
  • 292
  • 293
  • 294
  • 295
  • 296
  • 297
  • 298
  • 299
  • 300
  • 301
  • 302
  • 303
  • 304
  • 305
  • 306
  • 307
  • 308
  • 309
  • 310
  • 311
  • 312
  • 313
  • 314
  • 315
  • 316
  • 317
  • 318
  • 319
  • 320
  • 321
  • 322
  • 323
  • 324
  • 325
  • 326
  • 327
  • 328
  • 329
  • 330
  • 331
  • 332
  • 333
  • 334
  • 335
  • 336
  • 337
  • 338
  • 339
  • 340
  • 341
  • 342
  • 343
  • 344
  • 345
  • 346
  • 347
  • 348
  • 349
  • 350
  • 351
  • 352
  • 353
  • 354
  • 355
  • 356
  • 357
  • 358
  • 359
  • 360
  • 361
  • 362
  • 363
  • 364
  • 365
  • 366
  • 367
  • 368
  • 369
  • 370
  • 371
  • 372
  • 373
  • 374
  • 375
  • 376
  • 377
  • 378
  • 379
  • 380
  • 381
  • 382
  • 383
  • 384
  • 385
  • 386
  • 387
  • 388
  • 389
  • 390
  • 391
  • 392
  • 393
  • 394
  • 395
  • 396
  • 397
  • 398
  • 399
  • 400
  • 401
  • 402
  • 403
  • 404
  • 405
  • 406
  • 407
  • 408
  • 409
  • 410
  • 411
  • 412
  • 413
  • 414
  • 415
  • 416
  • 417
  • 418
  • 419
  • 420
  • 421
  • 422
  • 423
  • 424
  • 425
  • 426
  • 427
  • 428
  • 429
  • 430
  • 431
  • 432
  • 433
  • 434
  • 435
  • 436
  • 437
  • 438
  • 439
  • 440
  • 441
  • 442
  • 443
  • 444
  • 445
  • 446
  • 447
  • 448
  • 449
  • 450
  • 451
  • 452
  • 453
  • 454
  • 455
  • 456
  • 457
  • 458
  • 459
  • 460
  • 461
  • 462
  • 463
  • 464
  • 465
  • 466
  • 467
  • 468
  • 469
  • 470
  • 471
  • 472
  • 473
  • 474
  • 475
  • 476
  • 477
  • 478
  • 479
  • 480
  • 481
  • 482
  • 483
  • 484
  • 485
  • 486
  • 487
  • 488
  • 489
  • 490
  • 491
  • 492
  • 493
  • 494
  • 495
  • 496
  • 497
  • 498
  • 499
  • 500
  • 501
  • 502
  • 503
  • 504
  • 505
  • 506
  • 507
  • 508
  • 509
  • 510
  • 511
  • 512
  • 513
  • 514
  • 515
  • 516
  • 517
  • 518
  • 519
  • 520
  • 521
  • 522
  • 523
  • 524
  • 525
  • 526
  • 527
  • 528
  • 529
  • 530
  • 531
  • 532
  • 533
  • 534
  • 535
  • 536
  • 537
  • 538
  • 539
  • 540
  • 541
  • 542
  • 543
  • 544
  • 545
  • 546
  • 547
  • 548
  • 549
  • 550
  • 551
  • 552
  • 553
  • 554
  • 555
  • 556
  • 557
  • 558
  • 559
  • 560
  • 561
  • 562
  • 563
  • 564
  • 565
  • 566
  • 567
  • 568
  • 569
  • 570
  • 571
  • 572
  • 573
  • 574
  • 575
  • 576
  • 577
  • 578
  • 579
  • 580
  • 581
  • 582
  • 583
  • 584
  • 585
  • 586
  • 587
  • 588
  • 589
  • 590
  • 591
  • 592
  • 593
  • 594
  • 595
  • 596
  • 597
  • 598
  • 599
  • 600
  • 601
  • 602
  • 603
  • 604
  • 605
  • 606
  • 607
  • 608
  • 609
  • 610
  • 611
  • 612
  • 613
  • 614
  • 615
  • 616
  • 617
  • 618
  • 619
  • 620
  • 621
  • 622
  • 623
  • 624
  • 625
해당 자료는 10페이지 까지만 미리보기를 제공합니다.
10페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

핀토스(Pintos) 프로젝트 1번째 과제 User Program Basic 소스코드 및 코드분석 보고서 (설계 프로젝트 수행 결과)에 대한 보고서 자료입니다.

목차

[devices]
[examples]
[filesys]
[lib]
[misc]
[tests]
[threads]
[userprog]
[utils]
[vm]
.gitignore
LICENSE
Make.config
Makefile
Makefile.build
Makefile.kernel
Makefile.userprog



914KB
파일 607, 폴더 25


━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Document.hwp…………………………………………………18p


Pintos 프로젝트 2 User Program Basic
(설계 프로젝트 수행 결과)


I. 개발 목표

II. 개발 범위 및 내용
 가. 개발 범위
 나. 개발 내용

III. 추진 일정 및 개발 방법
 나. 개발 방법

IV. 연구 결과
 1. 합성 내용:
 2. 제작 내용
 3. 시험 및 평가 내용:

본문내용

I. 개발 목표
 - System Call, Argument Passing, Thread Handling, Kernel을 보호하기 위한 Exception Handling 등을 개발하여, 처음 제공된 기본 Pintos에서 Userprog이 적절히 실행될 수 있도록 하는 환경을 만드는 것을 목표로 한다. userprog와 pintos는 system call을 통해 서로 통신한다. 또한 추가구현으로 Fibonacci Number를 출력하는 System call과 4개의 수를 더해서 반환해주는 System call을 구현하였다.


II. 개발 범위 및 내용
 가. 개발 범위
  1) threads/thread.c
  2) threads/thread.h
  3) userprog/exception.c
  4) lib/user/syscall.c
  5) lib/syscall-nr.h
  6) userprog/syscall.c
  7) userprog/process.c
  8) lib/user/syscall.h

 나. 개발 내용
  매뉴얼에서 추천한 개발순서에 따라 개발을 하였다.
  1) Argument Passing
   - userprog/process.c안에 있는 load() 함수에서 parameter로 넘겨받은 인자들 을 직접 메모리에 Push하는 기능을 한다.
  2) User Memory Access
   - userprog/syscall.c에서 넘겨받은 esp를 통해 적절하게 처리한다. 포인터가 NULL값을 가지는 경우이거나, Kernel 영역을 침범하는 경우의 문제발생을 적절하게 방지한다.
  3) System call handler
   - userprog/syscall.를 기반으로 작성한다. parameter가 들어온 값을 적절하게 처리해준다. halt, exit, exec, wait, read, write 들을 작성하였다




 ≪ … 중 략 … ≫




  /* 첫 번째 arg(파일명) arg[0] 에 복사 */
 strlcpy(arg[0],tok,strlen(tok)+1);
 /* parameter toknizing 하여 arg[1],arg[2],...,에 넣어줌 */
 while((tok = strtok_r(NULL," ",&save_ptr)) != NULL)
 {
strlcpy(arg[index],tok,strlen(tok)+1);
 index++;
 }
 argc = index;
 /* push arguments */
 for(i=0;i  {
int len = strlen(arg[argc-i-1])+1;
*esp = *esp - len;
strlcpy((char*)*esp,arg[argc-i-1],len);
 }
 
 /* word align */
 if(*(unsigned*)esp % 4 != 0)
*esp -= *(unsigned*)esp%4;

 /* push NULL */
 *esp -= 4;
 *(unsigned*)*esp =0;

 /* push argvs */
 base = (unsigned)PHYS_BASE;
 for(i=0;i  {
*esp -= 4;
base -= strlen(arg[argc-i-1]) + 1;
*(unsigned*)*esp = base;
 }

 /* push argv */
 *esp -= 4;
 *(unsigned*)*esp = *esp + 4;

 /* push argc */
 *esp -= 4;
 *(unsigned*)*esp = argc;

 /* push return address */
 *esp -= 4;
 *(unsigned*)*esp = 0;


 stack은 위에서 시작해서 아래로 내려오는 방식으로 진행되므로 값의 순서는 tokenize 반대 순서대로 스택에 쌓아야 한다. 그것을 좀 쉽게 하기 위해 함수 내에서 arg라는 변수를 새로 선언을 하여 처음 tokenize한 token들을 저장해 준 뒤, 스택에 쌓을때는 arg의 맨 뒤에서부터 쌓아주도록 구현하였다.
  • 가격12,000
  • 페이지수625페이지
  • 등록일2015.01.19
  • 저작시기2014.9
  • 파일형식압축파일(zip)
  • 자료번호#1167572
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니