国产人妻人伦精品_欧美一区二区三区图_亚洲欧洲久久_日韩美女av在线免费观看

合肥生活安徽新聞合肥交通合肥房產(chǎn)生活服務(wù)合肥教育合肥招聘合肥旅游文化藝術(shù)合肥美食合肥地圖合肥社保合肥醫(yī)院企業(yè)服務(wù)合肥法律

代做CSC3150、代寫Java,c++編程

時間:2023-11-24  來源:合肥網(wǎng)hfw.cc  作者:hfw.cc 我要糾錯



CSC3150-Instruction-A4
Introduction
This assignment uses xv6, a simple and Unix-like teaching operating system, as the platform to
guide you in implementing the indirect block to support big file management. In existing
implementation, singly-indirect blocks can handle limited blocks that are invalid for large file
management. In this assignment, you'll increase the maximum size of an xv6 file by
implementing doubly-indirect blocks for further extension.
We suggest you read Chapter 8: File system before writing code.
Preliminaries
The mkfs program creates the xv6 file system disk image and determines how many total blocks
the file system has; this size is controlled by FSSIZE in kernel/param.h. You'll see that FSSIZE in
the repository for this lab is set to 200,000 blocks. You should see the following output from
mkfs/mkfs in the make output:
1 nmeta 70 (boot, super, log blocks 30 inode blocks 13, bitmap blocks 25) blocks 1
This line describes the file system that mkfs/mkfs built: it has 70 meta-data blocks (blocks used
to describe the file system) and 199,930 data blocks, totaling 200,000 blocks.
If at any point during the lab you find yourself having to rebuild the file system from scratch, you
can run 'make clean', which forces make to rebuild fs.img.
Submission
• Due on: 23:59, 06 Dec 2023
• Plagiarism is strictly forbidden. Please note that TAs may ask you to explain the meaning of
your program to ensure that the codes are indeed written by yourself. Please also note that
we would check whether your program is too similar to your fellow students' code and
solutions available on the internet using plagiarism detectors.
• Late submission: A late submission within 15 minutes will not induce any penalty on your
grades. But 00:16 am-1:00 am: Reduced by 10%; 1:01 am-2:00 am: Reduced by 20%; 2:01
am-3:00 am: Reduced by 30% and so on. (e.g., Li Hua submitted a perfect attempt at 2:10
a.m. He will get (100+10 (bonus))*0.7=77p
Format guide
The project structure is illustrated below. You can also use ls command to check if your
structure is fine. Structure mismatch would cause grade deduction.
For this assignment, you don't need a specific folder for the bonus part. The source folder
should contain four files: fs.c, file.h, fs.h, sysfile.c
main@ubuntu:~/Desktop/Assignment_4_120010001$ ls
Report.pdf source/
(One directory and one pdf.)
1
2
3
4
main@ubuntu:~/Desktop/Assignment_4_120010001/source$ ls
file.h fs.c fs.h sysfile.c
(two .c files and two .h file)
1
2
3
4
Please compress the folder containing all required files into a single zip file and name it using
your student ID as the code shown below and above, for example,
Assignment_4_120010001.zip. The report should be submitted in pdf format, together with
your source code. Format mismatch would cause grade deduction. Here is the sample step for
compressing your code.
main@ubuntu:~/Desktop$
zip -q -r Assignment_4_120010001.zip Assignment_4_120010001
main@ubuntu:~/Desktop$ ls
Assignment_4_120010001 Assignment_4_120010001.zip
1
2
3
4
5
Instruction Guideline
We limit your implementation within fs.c, file.h, fs.h, sysfile.c four files, starting with "TODO:"
comments. The entry (where you may start learning) of the test program is the main function in
bigfile.c, symlinktest.c (Bonus) under the 'xv6-labs-2022/user' directory.
Sections with (*) are introduction sections. These sections introduce tools and functions that
will help you understand what this system is about and how the system works with these
components. You might need to use it for this assignment. Do NOT CHANGE them except the
TODO parts.
1. For the introduction sections, please figure out how functions work and how to use them.
2. Be sure you have a basic idea of the content before starting your assignment. We believe that
those would be enough for handling this assignment.
3. (option) For students who are interested in the xv6 system and want to learn more about it,
you are welcome to read "xv6-book" to get more details.
a. https://pdos.csail.mit.edu/6.828/2022/xv6/book-riscv-rev3.pdf
Sections without (*) are TODO sections. In these sections, the logic of how this component/
function should work is a detailed list. You should implement functions in given places.
1. However, no sample code will be shown here. You need to figure out the implementation
based on the logic and APIs provided in the introduction sections.
Task1: Large Files
1. In this assignment, you'll increase the maximum size of an xv6 file. Currently, xv6 files are
limited to 268 blocks or 268*BSIZE bytes (BSIZE is 1024 in xv6).
a. This limit comes from the fact that an xv6 inode contains 12 "direct" block numbers and
one "singly-indirect" block number, which refers to a block that holds up to 256 more
block numbers for a total of 12+256=268 blocks.
2. The bigfile command creates the longest file it can and reports the size
a. The template we provide will fail to write 256 blocks. The test fails because bigfile expects
to be able to create a file with 65803 blocks, but unmodified xv6 limits files to 268 blocks.
3. You'll change the xv6 file system code to support a "doubly-indirect" block in each inode,
containing 256 addresses of singly-indirect blocks, each of which can contain up to 256
addresses of data blocks.
a. The result will be that a file can consist of up to 65803 blocks, or 256*256+256+11 blocks
(11 instead of 12 because we will sacrifice one of the direct block numbers for the doubleindirect block).
Definitions*
For more details, read <xv6-book> chapter 8.10
Following the hints and definitions above, we have provided you with the modified
structure. Please read the comments on the codes.
// Defined in kernel/fs.h
#define NDIRECT 11 // 12->11 By 3.a, we sacrifice 1 block for "doubly-indirec
#define NINDIRECT (BSIZE / sizeof(uint)) // = 1024/4 = 256
1
2
3
#define DNINDIRECT (NINDIRECT * NINDIRECT) // = 256*256
#define MAXFILE (NDIRECT + NINDIRECT + DNINDIRECT) // = 256*256 + 256 + 11
///NOTE: Do not modify the structure
// On-disk inode structure
struct dinode { short type; // File type
short major; // Major device number (T_DEVICE only)
short minor; // Minor device number (T_DEVICE only)
short nlink; // Number of links to inode in file system
uint size; // Size of file (bytes)
///NOTE: +2 instead of +1 because we NDIRECT is change from 12 to 11
uint addrs[NDIRECT+2]; // Data block addresses
};
//Defined in kernel/file.h
///NOTE: Do not modify the structure
// in-memory copy of an inode
struct inode { uint dev; // Device number
uint inum; // Inode number
int ref; // Reference count
struct sleeplock lock; // protects everything below here
int valid; // inode has been read from disk?
short type; // copy of disk inode
short major;
short minor;
short nlink;
uint size;
uint addrs[NDIRECT+2]; ///NOTE: +2 instead of +1 because we NDIRECT is chan
Learn from examples
For APIs provided above, they have been used to implement functions. You can learn how to use
those functions to develop our system.
You may take a look at how it is used in bmap(), itrunc(), bzero(), balloc(), bfree()
Especially read existing code in bmap() and itrunc() as these two functions are where we need
to modify, and they have already been implemented singly-indirect .
bmap()
See <xv6-book> chapter 8.10
// Inode content
//
// The content (data) associated with each inode is stored
// in blocks on the disk. The first NDIRECT block numbers
// are listed in ip->addrs[]. The next NINDIRECT blocks are
// listed in block ip->addrs[NDIRECT].
// Return the disk block address of the nth block in inode ip.
// If there is no such block, bmap allocates one.
// returns 0 if out of disk space.
// TODO: implement doubly-indirect
static uint bmap(struct inode *ip, uint bn);
bmap() is called both when reading and writing a file. When writing, bmap() allocates new
blocks as needed to hold file content, as well as allocating an indirect block if needed to hold
block addresses.
bmap() deals with two kinds of block numbers. The bn argument is a "logical block number" -- a
block number within the file, relative to the start of the file. The block numbers in ip->addrs[],
and the argument to bread(), are disk block numbers. You can view bmap() as mapping a file's
logical block numbers into disk block numbers.
itrunc()
See <xv6-book> chapter 8.10
itrunc frees a file’s blocks, resetting the inode’s size to zero. itrunc (kernel/fs.c:430) starts by
freeing the direct blocks(kernel/fs.c:436-441), then the ones listed in the indirect block
(kernel/fs.c:446- 449), and finally the indirect block itself (kernel/fs.c:45**452).
(TODO) Modify to support doubly-indirect block
///TODO: modify it to support doubly-link
// Inode content
//
// The content (data) associated with each inode is stored
// in blocks on the disk. The first NDIRECT block numbers
// are listed in ip->addrs[]. The next NINDIRECT blocks are
// listed in block ip->addrs[NDIRECT].
// Return the disk block address of the nth block in inode ip.
// If there is no such block, bmap allocates one.
// returns 0 if out of disk space.
static uint bmap(struct inode *ip, uint bn);
Modify bmap() so that it implements a doubly-indirect block in addition to direct blocks and a
singly-indirect block.
You'll have to have only 11 direct blocks, rather than 12, to make room for your new doublyindirect block; you're not allowed to change the size of an on-disk inode.
i.e., Do NOT modify the structure or size of addrs in dinode or inode. We have already set it
up for you.
///TODO: add discard of doubly-link correspondingly
// Truncate inode (discard contents).
// Caller must hold ip->lock.
void itrunc(struct inode *ip);
1
2
3
4
Hint
• The first 11 elements of ip->addrs[] should be direct blocks
• The 12th should be a singly-indirect block (just like the current one)
• The 13th should be your new doubly-indirect block. You are done with this exercise when
bigfile writes 65803 blocks
• Remember that it needs modification to release Double-Indirect blocks (modify itrunc())
Task2(Bonus): Symbolic links
In this exercise, you will add symbolic links to xv6.
• Symbolic links (or soft links) refer to a linked file by pathname; when a symbolic link is
opened, the kernel follows the link to the referred file.
• Symbolic links resembles hard links, but hard links are restricted to pointing to file on the
same disk, while symbolic links can cross disk devices.
• Although xv6 doesn't support multiple devices, implementing this system call is a good
exercise to understand how pathname lookup works.
(TODO) Implementation of symlink
You will implement the symlink(char *target, char *path) system call, which creates a new
symbolic link at path that refers to the file named by target. For further information, see the man
page symlink.
Your solution is complete when you pass all cases in symlinktest.
Hints
• Add a new file type (T_SYMLINK) to kernel/stat.h to represent a symbolic link. (We already
add it for you)
• Add a new flag to kernel/fcntl.h, (O_NOFOLLOW), that can be used with the open system call.
Note that flags passed to open are combined using a bitwise OR operator, so your new flag
should not overlap with any existing flags. This will let you compile user/symlinktest.c once
you add it to the Makefile. (We already define it for you)
• Implement the symlink(target, path) system call to create a new symbolic link at the path
that refers to target. Note that 'target' does not need to exist for the system call to succeed.
You will need to choose somewhere to store the target path of a symbolic link, for example,
in the inode's data blocks. symlink should return an integer representing success (0) or
failure (-1), similar to link and unlink.
• Modify the open system call to handle the case where the path refers to a symbolic link. If the
file does not exist, open must fail. When a process specifies O_NOFOLLOW in the flags to
open, open should open the symlink (and not follow the symbolic link).
• If the linked file is also a symbolic link, you must recursively follow it until a non-link file is
reached. If the links form a cycle, you must return an error code. You may approximate this
by returning an error code if the depth of links reaches some threshold (e.g., 10).
• Other system calls (e.g., link and unlink) must not follow symbolic links; these system calls
operate on the symbolic link itself.
• You do not have to handle symbolic links to directories for this lab.
Grading Rules
You can test the correctness of your code using the following commands under '~/xv6-labs-2022'
directory.
Test Task1
To run Task1, use the following command
make clean
make qemu
bigfile
1
2
3
By running the template we provide, you will receive the following information that tells you to
implement functions for big file.
$ bigfile
..
wrote 268 blocks
bigfile: file is too small
When you finish Task1 correctly, you should see the following output
$ bigfile
wrote 65803 blocks
done; ok
1
2
3
4
Test Task2
To run Task1, use the following command
1 make clean
make qemu
symlinktest
2
3
Template Output:
$ symlinktest
Start: test symlinks
FAILURE: symlink b -> a failed
Start: test concurrent symlinks
test concurrent symlinks: ok
1
2
3
4
5
Target Output:
$ symlinktest
Start: test symlinks
test symlinks: ok
Start: test concurrent symlinks
test concurrent symlinks: ok
5
Program part **' + bonus 10'
bigfile 40p
Compile Success 50p
symlinktest (bonus) 10p
Report part 10'
You shall strictly follow the provided latex template for the report, where we have emphasized
important parts and respective grading details. Reports based on other templates will not be
graded.

請加QQ:99515681 或郵箱:99515681@qq.com   WX:codehelp

掃一掃在手機(jī)打開當(dāng)前頁
  • 上一篇:代做COM661、代寫 Stack Strategies編程
  • 下一篇:GEOG3代寫、代做Python編程設(shè)計
  • 無相關(guān)信息
    合肥生活資訊

    合肥圖文信息
    流體仿真外包多少錢_專業(yè)CFD分析代做_友商科技CAE仿真
    流體仿真外包多少錢_專業(yè)CFD分析代做_友商科
    CAE仿真分析代做公司 CFD流體仿真服務(wù) 管路流場仿真外包
    CAE仿真分析代做公司 CFD流體仿真服務(wù) 管路
    流體CFD仿真分析_代做咨詢服務(wù)_Fluent 仿真技術(shù)服務(wù)
    流體CFD仿真分析_代做咨詢服務(wù)_Fluent 仿真
    結(jié)構(gòu)仿真分析服務(wù)_CAE代做咨詢外包_剛強(qiáng)度疲勞振動
    結(jié)構(gòu)仿真分析服務(wù)_CAE代做咨詢外包_剛強(qiáng)度疲
    流體cfd仿真分析服務(wù) 7類仿真分析代做服務(wù)40個行業(yè)
    流體cfd仿真分析服務(wù) 7類仿真分析代做服務(wù)4
    超全面的拼多多電商運營技巧,多多開團(tuán)助手,多多出評軟件徽y1698861
    超全面的拼多多電商運營技巧,多多開團(tuán)助手
    CAE有限元仿真分析團(tuán)隊,2026仿真代做咨詢服務(wù)平臺
    CAE有限元仿真分析團(tuán)隊,2026仿真代做咨詢服
    釘釘簽到打卡位置修改神器,2026怎么修改定位在范圍內(nèi)
    釘釘簽到打卡位置修改神器,2026怎么修改定
  • 短信驗證碼 豆包網(wǎng)頁版入口 破天一劍 目錄網(wǎng) 排行網(wǎng)

    關(guān)于我們 | 打賞支持 | 廣告服務(wù) | 聯(lián)系我們 | 網(wǎng)站地圖 | 免責(zé)聲明 | 幫助中心 | 友情鏈接 |

    Copyright © 2025 hfw.cc Inc. All Rights Reserved. 合肥網(wǎng) 版權(quán)所有
    ICP備06013414號-3 公安備 42010502001045

    国产人妻人伦精品_欧美一区二区三区图_亚洲欧洲久久_日韩美女av在线免费观看
    欧美激情亚洲视频| 精品视频在线观看一区二区| 91av在线国产| 国产综合香蕉五月婷在线| 性高湖久久久久久久久aaaaa| 国产精品欧美久久| 国产成人中文字幕| 国产精品12| 国产三区在线视频| 加勒比海盗1在线观看免费国语版| 日日噜噜噜噜夜夜爽亚洲精品| 在线视频不卡一区二区三区| 国产精品福利在线| 国产精品久久久久久av福利 | 久久久久免费精品国产| 国产精选在线观看91| 欧美最猛性xxxxx亚洲精品| 亚洲精品中文字幕在线| 亚洲www永久成人夜色| 欧美激情久久久久| 色综合久久悠悠| 精品国产乱码久久久久软件 | 国产精品极品美女在线观看免费| 日韩中文综合网| 久久久成人的性感天堂| 国产精品久久久久久久久粉嫩av| 欧美激情一区二区三级高清视频| 欧美大肥婆大肥bbbbb| 国产精品高清在线| 久热国产精品视频| 99在线热播| 国产男女免费视频| 欧美不卡1区2区3区| 欧美亚洲丝袜| 免费拍拍拍网站| 国产精品久久久久久久久久ktv | 午夜精品久久久久久久久久久久| 国产精品久久久久aaaa九色| 欧美区在线播放| 奇米四色中文综合久久| 毛葺葺老太做受视频| 国产女同一区二区| 国产美女精品免费电影| 久久久噜久噜久久综合| 亚洲欧美久久久久一区二区三区| 一级黄色免费在线观看| 欧美一级片久久久久久久| 国产在线精品一区二区中文 | 91久久精品久久国产性色也91| 日韩亚洲精品电影| 亚洲www视频| 亚洲国产精品综合| 国产日韩成人内射视频| 日韩三级成人av网| 日本高清不卡三区| 99久久99| 久久精品国产亚洲一区二区| 亚洲一区二区高清视频| 欧美久久在线| www日韩视频| 国产精品成人aaaaa网站| 日本高清不卡在线| 国产一区免费在线| 国产成人免费91av在线| 午夜一区二区三区| 分分操这里只有精品| 国产精品美女免费| 欧美亚洲丝袜| 久久久久久久久国产精品| 亚洲精品日韩成人| 精品午夜一区二区| 久久这里只有精品99| 欧美成人精品免费| 久久久久久久久久久免费精品| 在线精品亚洲一区二区| 成人免费毛片在线观看| 欧美日韩999| 国产精品一区在线观看| 亚洲最大福利网| 91久久久久久久久久久| 亚洲自拍欧美另类| 9191国产视频| 日韩激情视频一区二区| 久久久国产视频| 国产无套粉嫩白浆内谢的出处| 国产精品美乳在线观看| 国产日韩在线看片| 亚洲一区二区三区sesese | 亚洲va男人天堂| 久久久综合香蕉尹人综合网| 日韩aⅴ视频一区二区三区| 日韩一二三在线视频播| 男人添女人下部高潮视频在观看 | 激情六月天婷婷| 精品国产一区二区三区免费| 精品国产无码在线| 久久这里只有精品8| 欧美凹凸一区二区三区视频| 精品国产一区二区三区在线观看 | 精品乱码一区二区三区| 蜜桃91精品入口| 国产精品高潮呻吟久久av野狼| 成人动漫在线视频| 欧美日韩一区二区三区在线观看免| 欧美成年人视频网站欧美| 国产精品ⅴa在线观看h| 欧美日韩一区二区视频在线| 欧美精品在线极品| 久久久久一本一区二区青青蜜月| 国产日韩亚洲欧美| 日韩视频一二三| 亚洲一区二区自拍| 久久福利视频导航| 久久久久久久一| 91精品久久久久久久| 国产在线青青草| 欧美日韩第一视频| 国产精品爽黄69天堂a| 国产成人成网站在线播放青青| 国产青青在线视频| 日韩精品久久一区二区| 日本欧美精品在线| 日日摸日日碰夜夜爽无码| 欧美激情视频在线免费观看 欧美视频免费一| 91精品视频在线| 99免费在线观看视频| 国产伦精品一区二区三区免 | 美女av一区二区三区 | 日韩欧美精品一区二区| 色偷偷88888欧美精品久久久| 人人妻人人添人人爽欧美一区 | 成人中文字幕av| 久久久久久久久国产| 欧美精品一区二区三区三州| 久久99精品久久久久子伦| 欧美精品在线网站| 99热在线播放| 欧美精品自拍视频| 国产精品第一区| 99在线免费视频观看| 亚洲国产精品一区在线观看不卡| 麻豆一区二区三区在线观看 | 91麻豆桃色免费看| 国产精品人成电影在线观看 | 亚洲欧洲在线一区| 成年人网站国产| 黄色片免费在线观看视频| 久久久成人精品视频| 日韩精品久久一区| 国产精品欧美在线| 久久综合九九| 日韩免费中文专区| 国产精品久久久对白| 美国av一区二区三区| 日韩免费电影一区二区三区| 久久久久免费网| 国产在线精品一区二区中文 | 久99久在线| 日本精品久久中文字幕佐佐木| 亚洲va欧美va在线观看| 欧美另类69精品久久久久9999| 国产成人精品免费视频大全最热| 国产欧美精品日韩| 国产精品自在线| 成人短视频在线观看免费| 国产激情片在线观看| 午夜一区二区三视频在线观看| 日本一区二区三区视频在线播放| 国产精品无码av无码| 99久re热视频精品98| 日韩伦理一区二区三区av在线| 国产成人精品最新| 午夜精品一区二区三区在线视频| 国产精品2018| 青青草成人网| 一区二区三区四区免费视频 | 日韩av免费电影| 少妇精品久久久久久久久久| 国产色综合一区二区三区| 99久久激情视频| 欧美亚洲激情视频| 亚洲高清视频一区二区| 日韩精品一区二区免费| 黄色免费观看视频网站| 91成人综合网| 国产精品手机在线| 一区二区三区精品国产| 国产日韩欧美视频| 国产精品一码二码三码在线| 丝袜美腿亚洲一区二区| 久久精品xxx| 欧美一区二区三区免费视| www.日日操| 亚洲一区影院| 777久久精品一区二区三区无码| 久久国产精品电影| 国产精品一区二区免费看| 九九热视频这里只有精品| 欧美日韩精品在线一区二区 | 欧美中文字幕精品|