5.65M
Category: softwaresoftware

Set the Environment VMware+Ubuntu

1.

Set the Environment
VMware+Ubuntu
2022.10.19

2.

Set the Environment
Vmware (option 1 – pro /trial for 30 days):
https://customerconnect.vmware.com/en/downloads/info/slug/desktop_end_
user_computing/vmware_workstation_pro/16_0

3.

Set the Environment
Vmware (option2- player/free):
https://customerconnect.vmware.com/en/downloads/details?downloadGroup=
WKST-PLAYER-1620&productId=1039&rPId=75725

4.

Ubuntu:
https://ubuntu.com/#download

5.

Create a new virtual machine

6.

Choose the directory containing the downloaded file

7.

Double click the installed system

8.

Click the square at the bottom to choose Terminal
or simply click right button on desktop

9.

Try some commands

10.

Experiment 1
Linux operations and process creation

11.

Basic Information
• Experiment Name
• Linux operations and process creation
• Experiment Purpose
• Master basic commands in Linux
• Master the way to edit, compile and execute programs in Linux
• Understand the system call fork()
• Experiment Requirements
• Try to execute some basic commands and analyze the results
• Use gcc to compile a program with fork() and analyze the
output
• 4 Classes
• Experiment Environment: VMWare + Linux (Ubuntu)

12.

Experiment Environment
• Click right button on mouse in the blank area and choose “open
in terminal”. Then try some commands and record the result.

13.

Experiment Content-I
• Use Ctrl+Alt to switch between Windows and Ubuntu
• Basic common commands
• Directory operations
• ls [-arg][dirName] //list the content of the working
directory, e.g. type ”ls -l” to list the details
• pwd //check what the current directory is
• cd [dirName] //change the working directory, e.g. type
“cd ..” to go to the parent directory
• du [dirName] //check the size of the directory

14.

Experiment Content-I
• Basic common commands
• File operations
• cat fileName //print the content of a file
• rm filename //remove a file
• cp [-arg] sourceFileName destinationFileName //copy a
file from the source to the destination
• mv sourceFileName destinationFileName //move a file
from the source to the destination
• ln sourceFileName destinationFileName //link a file from
the source to the destination

15.

Experiment Content-I
• Basic common commands
• Process operations
• ps [-arg] //check the current processes in the shell
• kill pid //kill the process which process id is “pid”
• Get help information of a command
• man command (type “q” to quit)
• command --help

16.

Experiment Content-II
• Type the following code in the created file and save it

17.

Experiment Content-II
• Compile
• Type gcc sourFileName –o executionFileName //compile a c
file to get an execution file
• Or type gcc sourceFileName //automatically compiled to
“a.out”
• Execute
• Type ./executionFileName //execute the file, e.g. “./a.out”
• In “./a.out”, “.” represents the current working directory.
• Or try to type the absolute path name of the obtained
execution file

18.

Experiment Content-II

19.

Experiment Content-II
• During the execution
• Use Ctrl+Z to suspend the execution and then type “fg” to
resume it (optional)
• Suspend a process and type “ps” to see the information of
this process in shell
• Use Ctrl+C to terminate the execution

20.

About fork()
• Fork() is used for creating a new process (child process)
• The process that makes the fork() call is the parent process
• both processes execute the next instruction following the fork()
system call
• A child process uses the same pc(program counter), same CPU
registers, same open files which use in the parent process
• It takes no parameters and returns an integer value
• Negative Value: unsuccessful
• Zero: Returned to the newly created child process
• Positive value: Returned to parent or caller. The value
contains process ID of newly created child process

21.

About fork()
• Try to predict what the output will be before execute it

22.

Experiment 2
Interprocess Communication

23.

Basic Information
• Experiment Name
• Interprocess Communication
• Experiment Purpose
• Master the way to communicate between two processes by
sending messages
• Experiment Requirements
• Use gcc to compile two programs (server.c and client.c) with
msgget(), msgsnd(), and msgrcv()
• Execute the file for server.c in background first and then
execute the file for client.c. Analyze the output
• 4 Classes
• Experiment Environment: VMWare + Linux (Ubuntu)

24.

Experiment Content
• Edit two files and execute them as follows

25.

Experiment Content
• getpid() is used to get the pid of the current process
• msgget(key, flag) is used either to create a new message queue
or to locate an existing queue based on a key
• msgqid=msgget(MSGKEY, 0777)
• msgqid=msgget(MSGKEY, 0777|IPC_CREAT) //Create the
queue if it doesn't already exist in the kernel
• msgsnd(msgqid,msgp,size,flag) is used to send a message (msgp)
to a message queue (msgqid)
• msgsnd(msgqid,&msg,sizeof(int),0) (in both client.c and
server.c)

26.

Experiment Content
• msgrcv(msgqid, msgp, size, type, flag) is used to receive a
message (msgp) from a message queue (msgqid)
• msgtyp specifies the type of message requested
• If msgtyp is 0, then the first message in the queue is read.
• If msgtyp is greater than 0, then the first message in the
queue of type msgtyp is read
• If msgtyp is less than 0, then the first message in the
queue with the lowest type less than or equal to the
absolute value of msgtyp will be read
• msgrcv(msgqid,&msg,256,pid,0) (in client.c)
• msgrcv(msgqid,&msg,256,1,0) (in server.c)

27.

Experiment Content
• Compile and Execution
• gcc –o executionFileName sourFileName //compile a c file to
get an execution file
• gcc sourceFileName //automatically compiled to “a.out”
• ./executionFileName //execute the file, e.g. “./a.out”
• Use Ctrl+Z to suspend the execution and then type “fg” to
resume it
• Suspend a process and type “ps” to see the information of
this process in shell
• Use Ctrl+C to terminate the execution

28.

29.

Experiment 3
Page Replacement Algorithms

30.

Basic Information
• Experiment Name
• Page Replacement Algorithms
• Experiment Purpose
• Master the basic idea of multiple page replacement algorithms
and know how to implement one of them
• Experiment Requirements
• Write a program to determine the content of page frames for
inputted page reference string based on one of PRAs
• Use gcc to compile it and analyze the output of execution
(need to input the frame number and reference string)
• 4 Classes
• Experiment Environment: VMWare + Linux (Ubuntu)

31.

Experiment Content
Framework of the program:
• For each page in the page reference string (array prs[i])
• Check if it is in the frames (array fr[j])
• If it’s in one frame, continue to check the next page
• If it is not, check if there is an empty frame (fr[j]=-1)
• Yes put the page into the empty frame (fr[j]=prs[i])
• No based on a certain algorithm (OPT, FIFO, or LRU),
select a page from the frames and then replace this
page with the new page (find j to put prs[i] in fr[j])

32.

Experiment 4
File System Operations and Design

33.

Basic Information
• Experiment Name
• File System Operations and Design
• Experiment Purpose
• Master how to design and implement a simple file system
which can provide several basic operations on a file
• Experiment Requirements
• Write a program to build a simple file system based on a few
relevant system calls, such as creat, unlink, read, write, open,
and close.
• Use gcc to compile it and analyze the output of execution
(need to use the provided commands to create, read , write,
and delete a file)
• 4 Classes; Experiment Environment: VMWare + Linux

34.

Experiment Content
• Create a file: fd=creat (filenamep, mode);
• Delete a file: unlink (filenamep);
• Read a file: fd=open (filenamep, mode);
nr=read (fd, buf, count);
close (fd);
• Write a file: fd=open (filenamep, mode);
nw=write (fd, buf, count);
close (fd);

35.

#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <stdio.h>
#include <fcntl.h>
#include <dirent.h>
#define FILE_MODE (S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH)
#define BUFFSIZE 1024
#define MAX_FILENAME_LEN 100
void create_file(const char *fileName)
{
if(creat(fileName,FILE_MODE) < 0)
{
printf("Create file failed!\n");
}
else
{
printf("Create file successfully!\n");
}
}
void del_file(const char *fileName)
{
if(unlink(fileName) < 0)
{
printf("Delete file failed!\n");
}
else
{
printf("Delete file successfully!\n");
}
}
void print_file(const char *fileName)
{
int fd = -1;
int n;
char buf[BUFFSIZE];
fd = open(fileName,O_RDONLY);
if(fd < 0)
{
printf("Open file failed!\n");
return;
}
while((n=read(fd,buf,BUFFSIZE)) > 0)
{
if(write(STDOUT_FILENO,buf,n) != n)
{
printf("write error!\n");
return;
}
}

36.

Install gcc in Ubuntu by execute a simple command

37.

If it doesn’t work
You might try to set another server to get the packages---Click
circled “Software&Updates”

38.

Click circled menu to choose a server nearby
I choose huaweicloud, you are free to try others (near to your location)

39.

40.

If there are some errors to get the packages
You might try the following commands first

41.

Run “gcc –version” to check the version
Then you can run command such as “gcc 1.c –o 1” to compile a c file

42.

You might need to share some files between Ubuntu and Windows

43.

You might need to share some files between Ubuntu and Windows
Shared directory
in Windows

44.

Use touch to create a new file in your default working directory
Copy a file into /mnt/hgfs/YourDirName
Then you can see it in Windows
Double click to edit the file
In shared directory in Windows
English     Русский Rules