Issue title: Inter-process Mutex doesn't work for processes of different architectures on Apple Silicon
 Issue body: ### Description

It's impossible to synchronize .NET processes of different architectures  (x64 and aarch64) using `System.Threading.Mutex` on Apple Silicon

### Reproduction Steps

Let's create the following simple console application:

```csharp
using System;
using System.Threading;

class Program {
  static void Main(string[] args)
  {
      Mutex mutex = null;
      try
      {
          mutex = new Mutex(false, "Global\\MyUniqueMutexName");
          mutex.WaitOne();
          Thread.Sleep(TimeSpan.FromSeconds(60));
      }
      catch (Exception ex) { Console.WriteLine(ex); }
      finally { mutex?.ReleaseMutex(); }
  }
}
```

Then let's build it on Apple Silicon using two toolsets with .NET 6 - for [x64](https://dotnet.microsoft.com/download/dotnet/thank-you/sdk-6.0.100-macos-x64-binaries) and [aarch64](https://dotnet.microsoft.com/download/dotnet/thank-you/sdk-6.0.100-macos-arm64-binaries).

And then launch them sequentially in any order.

### Expected behavior

Both instances of the application run successfully and terminate  ~60 seconds after the start of the first one (the second instance waits for the global mutex acquired by the first one).

### Actual behavior

The second application is finished intermediately with following message
```
System.Threading.WaitHandleCannotBeOpenedException: A WaitHandle with system-wide name 'Global\MyUniqueMutexName' cannot be created. A WaitHandle of a different type might have the same name.
   at System.Threading.Mutex.CreateMutexCore(Boolean initiallyOwned, String name, Boolean& createdNew)
   at System.Threading.Mutex..ctor(Boolean initiallyOwned, String name)
   at Program.Main(String[] args) in /Users/Valentin.Grigorev/RiderProjects/GlobalMutexExperiment2/x64App/Program.cs:line 11
```

### Regression?

_No response_

### Known Workarounds

I don't know any workarounds

### Configuration

```
.NET SDK (reflecting any global.json):
 Version:   6.0.100
 Commit:    9e8b04bbff

Runtime Environment:
 OS Name:     Mac OS X
 OS Version:  11.6
 OS Platform: Darwin
 RID:         osx.11.0-arm64
 Base Path:   /Users/Valentin.Grigorev/Downloads/dotnet-sdk-6.0.100-osx-arm64/sdk/6.0.100/

Host (useful for support):
  Version: 6.0.0
  Commit:  4822e3c3aa

.NET SDKs installed:
  6.0.100 [/Users/Valentin.Grigorev/Downloads/dotnet-sdk-6.0.100-osx-arm64/sdk]

.NET runtimes installed:
  Microsoft.AspNetCore.App 6.0.0 [/Users/Valentin.Grigorev/Downloads/dotnet-sdk-6.0.100-osx-arm64/shared/Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 6.0.0 [/Users/Valentin.Grigorev/Downloads/dotnet-sdk-6.0.100-osx-arm64/shared/Microsoft.NETCore.App]
```

and 

```
.NET SDK (reflecting any global.json):
 Version:   6.0.100
 Commit:    9e8b04bbff

Runtime Environment:
 OS Name:     Mac OS X
 OS Version:  11.6
 OS Platform: Darwin
 RID:         osx.11.0-x64
 Base Path:   /Users/Valentin.Grigorev/Downloads/dotnet-sdk-6.0.100-osx-x64/sdk/6.0.100/

Host (useful for support):
  Version: 6.0.0
  Commit:  4822e3c3aa

.NET SDKs installed:
  6.0.100 [/Users/Valentin.Grigorev/Downloads/dotnet-sdk-6.0.100-osx-x64/sdk]

.NET runtimes installed:
  Microsoft.AspNetCore.App 6.0.0 [/Users/Valentin.Grigorev/Downloads/dotnet-sdk-6.0.100-osx-x64/shared/Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 6.0.0 [/Users/Valentin.Grigorev/Downloads/dotnet-sdk-6.0.100-osx-x64/shared/Microsoft.NETCore.App]
```

### Other information

_No response_
 Comments: 
 Comment 0: I couldn't figure out the best area label to add to this issue. If you have write-permissions please help me learn by adding exactly one [area label](https://github.com/dotnet/runtime/blob/master/docs/area-owners.md).
 Comment 1: cc: @kouvel
 Comment 2: Tagging subscribers to this area: @mangod9
See info in [area-owners.md](https://github.com/dotnet/runtime/blob/main/docs/area-owners.md) if you want to be subscribed.
<details>
<summary>Issue Details</summary>
<hr />

### Description

It's impossible to synchronize .NET processes of different architectures  (x64 and aarch64) using `System.Threading.Mutex` on Apple Silicon

### Reproduction Steps

Let's create the following simple console application:

```csharp
using System;
using System.Threading;

class Program {
  static void Main(string[] args)
  {
      Mutex mutex = null;
      try
      {
          mutex = new Mutex(false, "Global\\MyUniqueMutexName");
          mutex.WaitOne();
          Thread.Sleep(TimeSpan.FromSeconds(60));
      }
      catch (Exception ex) { Console.WriteLine(ex); }
      finally { mutex?.ReleaseMutex(); }
  }
}
```

Then let's build it on Apple Silicon using two toolsets with .NET 6 - for [x64](https://dotnet.microsoft.com/download/dotnet/thank-you/sdk-6.0.100-macos-x64-binaries) and [aarch64](https://dotnet.microsoft.com/download/dotnet/thank-you/sdk-6.0.100-macos-arm64-binaries).

And then launch them sequentially in any order.

### Expected behavior

Both instances of the application run successfully and terminate  ~60 seconds after the start of the first one (the second instance waits for the global mutex acquired by the first one).

### Actual behavior

The second application is finished intermediately with following message
```
System.Threading.WaitHandleCannotBeOpenedException: A WaitHandle with system-wide name 'Global\MyUniqueMutexName' cannot be created. A WaitHandle of a different type might have the same name.
   at System.Threading.Mutex.CreateMutexCore(Boolean initiallyOwned, String name, Boolean& createdNew)
   at System.Threading.Mutex..ctor(Boolean initiallyOwned, String name)
   at Program.Main(String[] args) in /Users/Valentin.Grigorev/RiderProjects/GlobalMutexExperiment2/x64App/Program.cs:line 11
```

### Regression?

_No response_

### Known Workarounds

I don't know any workarounds

### Configuration

```
.NET SDK (reflecting any global.json):
 Version:   6.0.100
 Commit:    9e8b04bbff

Runtime Environment:
 OS Name:     Mac OS X
 OS Version:  11.6
 OS Platform: Darwin
 RID:         osx.11.0-arm64
 Base Path:   /Users/Valentin.Grigorev/Downloads/dotnet-sdk-6.0.100-osx-arm64/sdk/6.0.100/

Host (useful for support):
  Version: 6.0.0
  Commit:  4822e3c3aa

.NET SDKs installed:
  6.0.100 [/Users/Valentin.Grigorev/Downloads/dotnet-sdk-6.0.100-osx-arm64/sdk]

.NET runtimes installed:
  Microsoft.AspNetCore.App 6.0.0 [/Users/Valentin.Grigorev/Downloads/dotnet-sdk-6.0.100-osx-arm64/shared/Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 6.0.0 [/Users/Valentin.Grigorev/Downloads/dotnet-sdk-6.0.100-osx-arm64/shared/Microsoft.NETCore.App]
```

and 

```
.NET SDK (reflecting any global.json):
 Version:   6.0.100
 Commit:    9e8b04bbff

Runtime Environment:
 OS Name:     Mac OS X
 OS Version:  11.6
 OS Platform: Darwin
 RID:         osx.11.0-x64
 Base Path:   /Users/Valentin.Grigorev/Downloads/dotnet-sdk-6.0.100-osx-x64/sdk/6.0.100/

Host (useful for support):
  Version: 6.0.0
  Commit:  4822e3c3aa

.NET SDKs installed:
  6.0.100 [/Users/Valentin.Grigorev/Downloads/dotnet-sdk-6.0.100-osx-x64/sdk]

.NET runtimes installed:
  Microsoft.AspNetCore.App 6.0.0 [/Users/Valentin.Grigorev/Downloads/dotnet-sdk-6.0.100-osx-x64/shared/Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 6.0.0 [/Users/Valentin.Grigorev/Downloads/dotnet-sdk-6.0.100-osx-x64/shared/Microsoft.NETCore.App]
```

### Other information

_No response_

<table>
  <tr>
    <th align="left">Author:</th>
    <td>valco1994</td>
  </tr>
  <tr>
    <th align="left">Assignees:</th>
    <td>-</td>
  </tr>
  <tr>
    <th align="left">Labels:</th>
    <td>

`area-System.Threading`, `untriaged`

</td>
  </tr>
  <tr>
    <th align="left">Milestone:</th>
    <td>-</td>
  </tr>
</table>
</details>
 Comment 3: Probably the issue is that the page size is different and the code is currently strict about the size of the shared memory file, which is based on the page size. I'll see if something can be done to fix it.
 Comment 4: @kouvel Hi! It uses different types on macOS x64 & macOS ARM64
https://github.com/dotnet/runtime/blob/4822e3c3aa77eb82b2fb33c9321f923cf11ddde6/src/coreclr/pal/src/include/pal/mutex.hpp#L123-L129
 Comment 5: It should be using file locks for both, I believe OSX doesn't have pthread robust mutexes
 Comment 6: Okay I checked, the error is coming from here
https://github.com/dotnet/runtime/blob/4822e3c3aa77eb82b2fb33c9321f923cf11ddde6/src/coreclr/pal/src/sharedmemory/sharedmemory.cpp#L705-L708
 Comment 7: Yea that would most likely be because the page size is different between x64 and amd64
 Comment 8: Fixed by https://github.com/dotnet/runtime/pull/62765, should be available in the next release (SDK 6.0.102 / runtime 6.0.2). Both the x64 and arm64 runtimes would need to be updated for them to be able to synchronize on a named mutex.
{'source': 'GithubIssues', 'repo_name_with_owner': 'dotnet/runtime', 'issue_id': 1066056675, 'repo_stars': 10640.0}