Sponsored Content
Top Forums Programming Why is C/C++ considered low-level languages??? Post 302622079 by Corona688 on Wednesday 11th of April 2012 01:35:46 PM
Old 04-11-2012
C/C++ are considered high/low level languages because you can write fairly high-level code, with complicated data structures and local variables and functions and various other things you'd find in "high"-level languages, and still have it translated into 100% pure uninterpreted assembly language. You can even write freestanding things like bootloaders and operating systems in C/C++ because you can exercise fine control over what external things are needed -- or, more to the point, aren't needed. You can forgo the standard libraries entirely and write code that depends on absolutely nothing.

This is very different from Java where everything has to be fed through an interpreter all the time. It's not the computer's native tongue, so to speak. You couldn't write a bootloader in it -- you'd need something else to load java first. It's not freestanding, not independent.

Your question unfortunately sounds a bit naive. Writing a disk defragmenter isn't trivial -- you need to understand a lot more than the language, you need to understand the structures of the filesystem in question. If you don't know enough about a filesystem to know which sectors to grab to find out what information, you can't write a defragmenter.

They're often written in C/C++, yes. They don't have to be, but because the structures for these filesystems are C/C++ anyway, it may be easiest to use them rather than reinvent the wheel.

If you want to build a defragmenter for educational reasons, I'd suggest working on the MS-DOS FAT16 filesystem which has very simple organization, then working up from there.

Last edited by Corona688; 04-11-2012 at 02:42 PM..
 

7 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Low level format?

I want to do a low level format like in windows (C:\format c:) but I don't know how it works in unix or linux.. Can somebody help me ? thnx :) (3 Replies)
Discussion started by: day
3 Replies

2. What is on Your Mind?

Programming languages polyglots: how many languages you know?

Post what languages (including scripting) you know, why and where you think that language is most usable. Also include libraries in which you're really good at (libusb, gtk, qt, etc). assembly? C or C++? perl or python? pascal? bash or csh/tcsh? opengl? gtk or qt? mono? (27 Replies)
Discussion started by: redoubtable
27 Replies

3. Programming

write() issue during a low level hdd access

Hi, I am trying to write zeroes to the hdd using a c program. I don't want to use the dd or ddrescue or any such inbuilt program because of reasons like real time progress, writing custom patterns. (my program is more like an erasure application, but does only zero fill). here are the steps... (35 Replies)
Discussion started by: sponnusa
35 Replies

4. IP Networking

Best reference for understanding low level info on nic cards drivers and functionality

Hi, What is the best reference that gives in detail on nic cards configuration , assigning multiple ip addresses to a single interface, netlink library etc and all basic stuff at this level..? Thanks (2 Replies)
Discussion started by: Gopi Krishna P
2 Replies

5. AIX

High Runqueue (R) LOW CPU LOW I/O Low Network Low memory usage

Hello All I have a system running AIX 61 shared uncapped partition (with 11 physical processors, 24 Virtual 72GB of Memory) . The output from NMON, vmstat show a high run queue (60+) for continous periods of time intervals, but NO paging, relatively low I/o (6000) , CPU % is 40, Low network.... (9 Replies)
Discussion started by: IL-Malti
9 Replies

6. Programming

System calls and C language low-level qualities???

Hi friends, I hope everyone is fine and doing well. I queried in my previous thread about the low-level qualities of C/C++ languages.I really thank you people for explaining, it was really helpful. One more ambiquity that I have in my mind is regarding the unix system calls like open, creat,... (1 Reply)
Discussion started by: gabam
1 Replies

7. Programming

Low level X11 programming

How to use X11 without Xlib not XCB? How draw window directly on low level? I must use anyway window manager like Motif? I have ridden that X11 has server-client architecture, client send via TCP/IP to port 6000 request for primitives and get replies. Where is detailed description of it? In X11... (0 Replies)
Discussion started by: AndrzejB
0 Replies
MKFS.FAT(8)							    dosfstools							       MKFS.FAT(8)

NAME
mkfs.fat - create an MS-DOS filesystem under Linux SYNOPSIS
mkfs.fat [ -a ] [ -A ] [ -b sector-of-backup ] [ -c ] [ -l filename ] [ -C ] [ -f number-of-FATs ] [ -F FAT-size ] [ -h number-of-hidden- sectors ] [ -i volume-id ] [ -I ] [ -m message-file ] [ -n volume-name ] [ -r root-dir-entries ] [ -R number-of-reserved-sectors ] [ -s sectors-per-cluster ] [ -S logical-sector-size ] [ -v ] device [ block-count ] DESCRIPTION
mkfs.fat is used to create an MS-DOS filesystem under Linux on a device (usually a disk partition). device is the special file correspond- ing to the device (e.g /dev/hdXX). block-count is the number of blocks on the device. If omitted, mkfs.fat automatically determines the filesystem size. OPTIONS
-a Normally, for any filesystem except very small ones, mkfs.fat will align all the data structures to cluster size, to make sure that as long as the partition is properly aligned, so will all the data structures in the filesystem. This option disables alignment; this may provide a handful of additional clusters of storage at the expense of a significant performance degradation on RAIDs, flash media or large-sector hard disks. -A Use Atari variation of the MS-DOS filesystem. This is default if mkfs.fat is run on an Atari, then this option turns off Atari for- mat. There are some differences when using Atari format: If not directed otherwise by the user, mkfs.fat will always use 2 sectors per cluster, since GEMDOS doesn't like other values very much. It will also obey the maximum number of sectors GEMDOS can handle. Larger filesystems are managed by raising the logical sector size. Under Atari format, an Atari-compatible serial number for the filesystem is generated, and a 12 bit FAT is used only for filesystems that have one of the usual floppy sizes (720k, 1.2M, 1.44M, 2.88M), a 16 bit FAT otherwise. This can be overridden with the -F option. Some PC-specific boot sector fields aren't written, and a boot message (option -m) is ignored. -b sector-of-backup Selects the location of the backup boot sector for FAT32. Default depends on number of reserved sectors, but usually is sector 6. The backup must be within the range of reserved sectors. -c Check the device for bad blocks before creating the filesystem. -C Create the file given as device on the command line, and write the to-be-created filesystem to it. This can be used to create the new filesystem in a file instead of on a real device, and to avoid using dd in advance to create a file of appropriate size. With this option, the block-count must be given, because otherwise the intended size of the filesystem wouldn't be known. The file cre- ated is a sparse file, which actually only contains the meta-data areas (boot sector, FATs, and root directory). The data portions won't be stored on the disk, but the file nevertheless will have the correct size. The resulting file can be copied later to a floppy disk or other device, or mounted through a loop device. -f number-of-FATs Specify the number of file allocation tables in the filesystem. The default is 2. Currently the Linux MS-DOS filesystem does not support more than 2 FATs. -F FAT-size Specifies the type of file allocation tables used (12, 16 or 32 bit). If nothing is specified, mkfs.fat will automatically select between 12, 16 and 32 bit, whatever fits better for the filesystem size. -h number-of-hidden-sectors Select the number of hidden sectors in the volume. Apparently some digital cameras get indigestion if you feed them a CF card with- out such hidden sectors, this option allows you to satisfy them. Assumes '0' if no value is given on the command line. -i volume-id Sets the volume ID of the newly created filesystem; volume-id is a 32-bit hexadecimal number (for example, 2e24ec82). The default is a number which depends on the filesystem creation time. -I It is typical for fixed disk devices to be partitioned so, by default, you are not permitted to create a filesystem across the entire device. mkfs.fat will complain and tell you that it refuses to work. This is different when using MO disks. One doesn't always need partitions on MO disks. The filesystem can go directly to the whole disk. Under other OSes this is known as the 'superfloppy' format. This switch will force mkfs.fat to work properly. -l filename Read the bad blocks list from filename. -m message-file Sets the message the user receives on attempts to boot this filesystem without having properly installed an operating system. The message file must not exceed 418 bytes once line feeds have been converted to carriage return-line feed combinations, and tabs have been expanded. If the filename is a hyphen (-), the text is taken from standard input. -n volume-name Sets the volume name (label) of the filesystem. The volume name can be up to 11 characters long. The default is no label. -r root-dir-entries Select the number of entries available in the root directory. The default is 112 or 224 for floppies and 512 for hard disks. -R number-of-reserved-sectors Select the number of reserved sectors. With FAT32 format at least 2 reserved sectors are needed, the default is 32. Otherwise the default is 1 (only the boot sector). -s sectors-per-cluster Specify the number of disk sectors per cluster. Must be a power of 2, i.e. 1, 2, 4, 8, ... 128. -S logical-sector-size Specify the number of bytes per logical sector. Must be a power of 2 and greater than or equal to 512, i.e. 512, 1024, 2048, 4096, 8192, 16384, or 32768. -v Verbose execution. BUGS
mkfs.fat can not create boot-able filesystems. This isn't as easy as you might think at first glance for various reasons and has been dis- cussed a lot already. mkfs.fat simply will not support it ;) AUTHOR
Dave Hudson - <dave@humbug.demon.co.uk>; modified by Peter Anvin <hpa@yggdrasil.com>. Fixes and additions by Roman Hodek <roman@hodek.net> for Debian GNU/Linux. ACKNOWLEDGMENTS
mkfs.fat is based on code from mke2fs (written by Remy Card - <card@masi.ibp.fr>) which is itself based on mkfs (written by Linus Torvalds - <torvalds@cs.helsinki.fi>). SEE ALSO
fsck.fat(8), fatlabel(8), mkfs(8) 3.0.19 2013-06-11 MKFS.FAT(8)
All times are GMT -4. The time now is 08:08 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy