file management system
DESCRIPTION
FILE MANAGEMENT SYSTEM. Supervisor M. TIMSIT Claude. Group Members RAMOLY Nathan HEMMI Florent AZANGUE Roméo CHOUIKH Jaouher JRIDI Bayrem NINTIDEM Estelle Olivia. Academic year 2011-2012. INTRODUCTION. PLAN. MATERIAL AND DIFFERENTS STAGES. - PowerPoint PPT PresentationTRANSCRIPT
FILE MANAGEMENT SYSTEM
Group MembersRAMOLY NathanHEMMI FlorentAZANGUE RoméoCHOUIKH Jaouher JRIDI BayremNINTIDEM Estelle Olivia
Supervisor M. TIMSIT Claude
Academic year 2011-2012 1
INTRODUCTIONPLAN
CONCLUSION
I. MATERIAL AND DIFFERENTS STAGES
II. METHODS AND SYSTEM DESIGN
III. PROBLEMS AND SOLUTIONS
IV. DEMONSTRATION
Nathan RAMOLY, Florent HEMMI, Roméo AZANGUE, Jaouher CHOUIKH, Bayrem JRIDI, Estelle NINTIDEM
2
Nathan RAMOLY, Florent HEMMI, Roméo AZANGUE, Jaouher CHOUIKH, Bayrem JRIDI, Estelle NINTIDEM
INTRODUCTION
3
4RAMOLY Nathan, HEMMI Florent, AZANGUE Roméo, CHOUIKH Jaouher, JRIDI Bayrem, NINTIDEM Estelle
INTRODUCTION
The file management system
Software that manages data files
Create, enter, change and query files
EXT2, HFS PLUS , FAT
RAMOLY Nathan, HEMMI Florent, AZANGUE Roméo, CHOUIKH Jaouher, JRIDI Bayrem, NINTIDEM Estelle
INTRODUCTION
Requirements
Functional Requirements• Management module• Execution module• Documentation module
Non-Functional Requirements• Convenient GUI• Clear errors messages
5
RAMOLY Nathan, HEMMI Florent, AZANGUE Roméo, CHOUIKH Jaouher, JRIDI Bayrem, NINTIDEM Estelle
INTRODUCTION
Use Case Diagram
6
Nathan RAMOLY, Florent HEMMI, Roméo AZANGUE, Jaouher CHOUIKH, Bayrem JRIDI, Estelle NINTIDEM
I. MATERIAL AND DIFFERENT STAGES
7
RAMOLY Nathan, HEMMI Florent, AZANGUE Roméo, CHOUIKH Jaouher, JRIDI Bayrem, NINTIDEM Estelle
I. MATERIAL AND DIFFERENTS STAGES
Material• Software
o Code blocks o QT
• Turtoise SVN (Subversion)
• Libraries
o Standard libraries
8
RAMOLY Nathan, HEMMI Florent, AZANGUE Roméo, CHOUIKH Jaouher, JRIDI Bayrem, NINTIDEM Estelle
I. MATERIAL AND DIFFERENTS STAGES
Differents Stages
• The Theory • Realisation
• Debug
9
RAMOLY Nathan, HEMMI Florent, AZANGUE Roméo, CHOUIKH Jaouher, JRIDI Bayrem, NINTIDEM Estelle
II. METHODS AND SYSTEM DESIGN
• THE THEORY • HANDLING OF THE DISK• BITMAPS• INODES• DIRECTORIES• FILES
10
II. METHODS AND SYSTEM DESIGN
RAMOLY Nathan, HEMMI Florent, AZANGUE Roméo, CHOUIKH Jaouher, JRIDI Bayrem, NINTIDEM Estelle
The Theory
Simulation of the disk
o The disk is declared as statico It is composed of a number of blocks
that’s declared in the defines
11
II. METHODS AND SYSTEM DESIGN
RAMOLY Nathan, HEMMI Florent, AZANGUE Roméo, CHOUIKH Jaouher, JRIDI Bayrem, NINTIDEM Estelle
Handling of the disk
int8_t disk_access(Block** block, int pos)
Block* disk_ptr() int8_t disk_set_block(Block* block,
int pos) int8_t disk_get_block(Block* block,
int pos) int8_t save_disk_hard_drive() int8_t load_disk_hard_drive()…
12
II. METHODS AND SYSTEM DESIGN
Nathan RAMOLY, Florent HEMMI, Roméo AZANGUE, Jaouher CHOUIKH, Bayrem JRIDI, Estelle NINTIDEM
Bitmaps
Root
/
Boot block
Inode
bitmap
Block
bitmap
Inodes Blocks
Bitmap
We can consider the bitmap as a map that facilitates moving in the blocks of our disk
13
II. METHODS AND SYSTEM DESIGN
Nathan RAMOLY, Florent HEMMI, Roméo AZANGUE, Jaouher CHOUIKH, Bayrem JRIDI, Estelle NINTIDEM
Bitmaps
0 1 1 0 0 1 0 001 occupie
d10 corrupt00 free
Bitmap Inode
14
0 1 0 0 0 1 1 001 occupied10 corrupt00 free
II. METHODS AND SYSTEM DESIGN
Nathan RAMOLY, Florent HEMMI, Roméo AZANGUE, Jaouher CHOUIKH, Bayrem JRIDI, Estelle NINTIDEM
Bitmaps Bitmap
Block
15
II. METHODS AND SYSTEM DESIGN
Nathan RAMOLY, Florent HEMMI, Roméo AZANGUE, Jaouher CHOUIKH, Bayrem JRIDI, Estelle NINTIDEM
Bitmaps Implementation of some functions
int8_t bitmap_inode_init() int8_t bitmap_inode_get_status(int numInode) int8_t bitmap_inode_set_status(int numInode, int
status) int32_t bitmap_first_free_inode() int32_t bitmap_nb_free_inode()
16
II. METHODS AND SYSTEM DESIGN
Nathan RAMOLY, Florent HEMMI, Roméo AZANGUE, Jaouher CHOUIKH, Bayrem JRIDI, Estelle NINTIDEM
Bitmaps Bitmap Bloc
int8_t bitmap_block_init(). int8_t bitmap_block_get_status(int nBlock) int8_t bitmap_block_set_status(int nBlock, int
status) int32_t bitmap_first_free_block() int32_t bitmap_nb_free_block() int32_t bitmap_nb_occupied_block()
17
II. METHODS AND SYSTEM DESIGN
Nathan RAMOLY, Florent HEMMI, Roméo AZANGUE, Jaouher CHOUIKH, Bayrem JRIDI, Estelle NINTIDEM
Inodes• The structure
o Size (in bytes)o The last access timeo Type (file or folder)o 10 addresses blockso An address for the single
indirection blocko An address for the double
indirection block
18
II. METHODS AND SYSTEM DESIGN
Nathan RAMOLY, Florent HEMMI, Roméo AZANGUE, Jaouher CHOUIKH, Bayrem JRIDI, Estelle NINTIDEM
Inodes• Indirections
19
II. METHODS AND SYSTEM DESIGN
Nathan RAMOLY, Florent HEMMI, Roméo AZANGUE, Jaouher CHOUIKH, Bayrem JRIDI, Estelle NINTIDEM
Inodes• Indirections 1 block = N bytes 10 blocks: 10*N bytes Single indirection: N²/4 Double indirection: N3/16 Total: [10 + N/4 + (N/4)²]*N
20
21
II. METHODS AND SYSTEM DESIGN
Nathan RAMOLY, Florent HEMMI, Roméo AZANGUE, Jaouher CHOUIKH, Bayrem JRIDI, Estelle NINTIDEM
Inodes• Navigation functions Inode_get_next_block:
next adress block Inode_get_pos_block_from_byt
e:block adress which contains the byte number
II. METHODS AND SYSTEM DESIGN
Nathan RAMOLY, Florent HEMMI, Roméo AZANGUE, Jaouher CHOUIKH, Bayrem JRIDI, Estelle NINTIDEM
Inodes• Inode low level function
22
Function in charge allocating and freeing blocks
Two choices: Allocate and stop (no more free space) Don’t allocate if there is not enough
space Take two parameters:
A pointer to an inode A new size for the inode
23
II. METHODS AND SYSTEM DESIGN
Nathan RAMOLY, Florent HEMMI, Roméo AZANGUE, Jaouher CHOUIKH, Bayrem JRIDI, Estelle NINTIDEM
Inodes• Allocating a block Allocated an indirection block if
necessary Asked to the bitmap the address of
the first free block Added it to the inode by selecting the
corresponding block (10 blocks or indirections)
Indicated that the block in now occupied
24
II. METHODS AND SYSTEM DESIGN
Nathan RAMOLY, Florent HEMMI, Roméo AZANGUE, Jaouher CHOUIKH, Bayrem JRIDI, Estelle NINTIDEM
Inodes• Freeing a block Flagged the address block to -1 Removed indirection block from the
inode if necessary(memory leak possible if it is not done)
Indicated that the block in now free so it can be used by another
II. METHODS AND SYSTEM DESIGN
Nathan RAMOLY, Florent HEMMI, Roméo AZANGUE, Jaouher CHOUIKH, Bayrem JRIDI, Estelle NINTIDEM
Inodes• Basic functions
Initialization:◦Size: 0◦Type: 1 for a file (by default)◦Last access time: system time◦Addresses: -1
Last access time Inode storage:
◦Get an inode from the RAM-disk◦Save an inode to the RAM-disk
25
Nathan RAMOLY, Florent HEMMI, Roméo AZANGUE, Jaouher CHOUIKH, Bayrem JRIDI, Estelle NINTIDEM
Needed in any file systemLists all the filesAllows the user to create
hierarchy◦Travel in the tree◦Main directory called root
II. METHODS AND SYSTEM DESIGN
Directories
26
Nathan RAMOLY, Florent HEMMI, Roméo AZANGUE, Jaouher CHOUIKH, Bayrem JRIDI, Estelle NINTIDEM
II. METHODS AND SYSTEM DESIGN
Directories Directory implementation
◦ A special file (inode, blocks, etc…)◦ Contains the list with the following
forms 4 bytes for the address 8+1 bytes for the name Not sorted
◦ First entry: “..” referring the parent directory
◦ Root corresponds to the first inode◦ Current directory saved as a global
variable 27
RAMOLY Nathan, HEMMI Florent, AZANGUE Roméo, CHOUIKH Jaouher, JRIDI Bayrem, NINTIDEM Estelle
Addition of an element◦Two steps Increase the size Add the entry at the end
Directories
II. METHODS AND SYSTEM DESIGN
28
Directories
II. METHODS AND SYSTEM DESIGN
Deleting an element◦Four main steps Save the last element Find the element to delete Replace it by the last one Reduce the size of the
directory◦No memory is released
Nathan RAMOLY, Florent HEMMI, Roméo AZANGUE, Jaouher CHOUIKH, Bayrem JRIDI, Estelle NINTIDEM
29
Directories
II. METHODS AND SYSTEM DESIGN
Deleting of an element◦Schemas of a deletion in the
system
Nathan RAMOLY, Florent HEMMI, Roméo AZANGUE, Jaouher CHOUIKH, Bayrem JRIDI, Estelle NINTIDEM
30
Directories
II. METHODS AND SYSTEM DESIGN
Searching a file◦Main interest of directory◦Simply do a loop Going through entry by entry
until the directory’s size is reached
Moving inside a block until there is no more space, then go on to the next block
Exiting as soon as the file is foundNathan RAMOLY, Florent HEMMI, Roméo AZANGUE, Jaouher CHOUIKH, Bayrem JRIDI, Estelle
NINTIDEM31
Directories
II. METHODS AND SYSTEM DESIGN
Creating a directory◦Four steps Check if it doesn’t already
exists Allocate an inode Create a basic inode and put
it in the allocated space Add the entry “..”
Nathan RAMOLY, Florent HEMMI, Roméo AZANGUE, Jaouher CHOUIKH, Bayrem JRIDI, Estelle NINTIDEM
32
Directories
II. METHODS AND SYSTEM DESIGN
Deleting a directory◦Delete all the content Loop to read all the content File: call the specified
function Directory: recall this function
◦Set the size to 0◦Free the inode◦Remove the entry from the
parent directory Nathan RAMOLY, Florent HEMMI, Roméo AZANGUE, Jaouher CHOUIKH, Bayrem JRIDI, Estelle
NINTIDEM33
34
Directories
II. METHODS AND SYSTEM DESIGN
Printing◦ Extraction of the directory’s content as a
linked list◦ Sorting the list
Using comparison functions (Size, date and name)
Using a bubble sort algorithm ◦ Printing the list◦ Function ls
Simply allow the user to select : The kind of sort Ascendant or not Complete or not
Nathan RAMOLY, Florent HEMMI, Roméo AZANGUE, Jaouher CHOUIKH, Bayrem JRIDI, Estelle NINTIDEM
Directories
II. METHODS AND SYSTEM DESIGN
Moving in the tree◦Move the current directory◦Path syntax used:
“dir1/dir2/dir3”◦Path interpretation by cut_dir◦Movement done by mini_cd Moves the current directory
Nathan RAMOLY, Florent HEMMI, Roméo AZANGUE, Jaouher CHOUIKH, Bayrem JRIDI, Estelle NINTIDEM
35
36
Files
II. METHODS AND SYSTEM DESIGN
Nathan RAMOLY, Florent HEMMI, Roméo AZANGUE, Jaouher CHOUIKH, Bayrem JRIDI, Estelle NINTIDEM
HEADER FUNCTIONS
Mini _format : int8_t mini_format () This function allows to free all the inodes and blocks and set status of Bitmaps to available.
Mini_ls : void mini_ls (char* input, int8_t dataSort, int8_t asc, int8_t complete) This function allows to view the content of our directories
Mini_rm : int8_t mini_rm (char* dir, char* name) It removes file in the directory dir
toto/titi .. titi
37
Files
II. METHODS AND SYSTEM DESIGN
Nathan RAMOLY, Florent HEMMI, Roméo AZANGUE, Jaouher CHOUIKH, Bayrem JRIDI, Estelle NINTIDEM
Mini_open : Fs_file* mini_open (char* file_name, int8_t mode) It works like fopen we pass in parameter the file name and the flag
FS_CREATE/ FS_RDWR write at the beginning FS_RDONLYFS_WRONLYFS_WRONLY/FS_APPEND write at the end
Mini_read : int32_t mini_read (void* data, size_t size, Fs_file* file)
Mini_write : int32_t mini_write (void* data, size_t size, Fs_file* file)
Flag
Files
II. METHODS AND SYSTEM DESIGN
Nathan RAMOLY, Florent HEMMI, Roméo AZANGUE, Jaouher CHOUIKH, Bayrem JRIDI, Estelle NINTIDEM
Mini_cd : int32_t mini_cd (char* directory) Mini_df : int8_t mini_df (Fs_stat* st)
Mini_close : : int8_t mini_close (Fs_file* file)
38
III. PROBLEMS AND SOLUTIONS
Nathan RAMOLY, Florent HEMMI, Roméo AZANGUE, Jaouher CHOUIKH, Bayrem JRIDI, Estelle NINTIDEM
39
III. PROBLEMS AND SOLUTIONS
Nathan RAMOLY, Florent HEMMI, Roméo AZANGUE, Jaouher CHOUIKH, Bayrem JRIDI, Estelle NINTIDEM
40
None technical problems
Technical problemsConception
“disk.img”
File Structure
41
III. PROBLEMS AND SOLUTIONS
Nathan RAMOLY, Florent HEMMI, Roméo AZANGUE, Jaouher CHOUIKH, Bayrem JRIDI, Estelle NINTIDEM
TestsThe Inodes
The directoriesThe files
Inode_get_next_block(Inode *inode);
42
III. PROBLEMS AND SOLUTIONS
Nathan RAMOLY, Florent HEMMI, Roméo AZANGUE, Jaouher CHOUIKH, Bayrem JRIDI, Estelle NINTIDEM
Error management#define RET_SUCCESS 0#define RET_TRUE1#define RET_FALSE0#define ERROR -1#define ERR_NULL -2#define ERR_READ -3#define ERR_CORRUPT -4#define ERR_OUT_OF_RANGE -5#define ERR_PARAMETER -6#define ERR_INIT -7#define ERR_ALLOC -8#define ERR_FILE -9
Nathan RAMOLY, Florent HEMMI, Roméo AZANGUE, Jaouher CHOUIKH, Bayrem JRIDI, Estelle NINTIDEM
IV. DEMONSTRATION
43
44Nathan RAMOLY, Florent HEMMI, Roméo AZANGUE, Jaouher CHOUIKH, Bayrem JRIDI, Estelle NINTIDEM
CONCLUSION
CONCLUSION
Nathan RAMOLY, Florent HEMMI, Roméo AZANGUE, Jaouher CHOUIKH, Bayrem JRIDI, Estelle NINTIDEM
FMS with a GUIUNIX BasedFurther improvementsIndirection algorithmAlias & shortcutsImprove the block structureUpper layer applications -> OS
45
46Nathan RAMOLY, Florent HEMMI, Roméo AZANGUE, Jaouher CHOUIKH, Bayrem JRIDI, Estelle NINTIDEM
THANK FOR YOUR ATTENTION